Files
aistudio-wpf-diagram/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml

908 lines
58 KiB
Plaintext
Raw Normal View History

2022-10-28 22:45:39 +08:00
<UserControl x:Class="AIStudio.Wpf.DiagramDesigner.DiagramControl"
2021-07-23 09:42:22 +08:00
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
2023-03-05 21:30:53 +08:00
xmlns:dd="clr-namespace:AIStudio.Wpf.DiagramDesigner"
2022-10-28 22:45:39 +08:00
xmlns:c="clr-namespace:AIStudio.Wpf.DiagramDesigner.Controls"
2021-07-23 09:42:22 +08:00
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
mc:Ignorable="d" HorizontalAlignment="Center" VerticalAlignment="Center"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
2022-10-28 22:45:39 +08:00
<ResourceDictionary Source="/AIStudio.Wpf.DiagramDesigner;component/Themes/Generic.xaml" />
2021-07-23 09:42:22 +08:00
</ResourceDictionary.MergedDictionaries>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
2023-03-05 21:30:53 +08:00
<dd:ColorBrushConverter x:Key="ColorBrushConverter" />
<dd:ConectorOrientationConverter x:Key="ConectorOrientationConverter" />
<dd:ConectorValueConverter x:Key="ConectorValueConverter"/>
<dd:ArrowPathConverter x:Key="ArrowPathConverter"/>
<dd:ArrowSizeConverter x:Key="ArrowSizeConverter"/>
<dd:LineDashConverter x:Key="LineDashConverter"/>
<dd:ClipConverter x:Key="ClipConverter"/>
<dd:InvertBoolConverter x:Key="InvertBoolConverter"/>
<dd:ConectorStyleConverter x:Key="ConectorStyleConverter"/>
<dd:NotNullOrEmptyToBoolConverter x:Key="NotNullOrEmptyToBoolConverter"/>
2023-02-14 22:54:55 +08:00
2021-07-23 09:42:22 +08:00
<!-- ResizeDecorator Default Template -->
<!--
<ControlTemplate x:Key="ResizeDecoratorTemplate" TargetType="{x:Type Control}">
<Grid SnapsToDevicePixels="true">
<c:ResizeThumb Height="1" Cursor="SizeNS" Margin="0 0 0 0"
VerticalAlignment="Top" HorizontalAlignment="Stretch"/>
<c:ResizeThumb Width="1" Cursor="SizeWE" Margin="0 0 0 0"
VerticalAlignment="Stretch" HorizontalAlignment="Left"/>
<c:ResizeThumb Width="1" Cursor="SizeWE" Margin="0 0 0 0"
VerticalAlignment="Stretch" HorizontalAlignment="Right"/>
<c:ResizeThumb Height="1" Cursor="SizeNS" Margin="0 0 0 0"
VerticalAlignment="Bottom" HorizontalAlignment="Stretch"/>
<c:ResizeThumb Width="7" Height="7" Cursor="SizeNWSE" Margin="-3 -3 0 0"
VerticalAlignment="Top" HorizontalAlignment="Left"/>
<c:ResizeThumb Width="7" Height="7" Cursor="SizeNESW" Margin="0 -3 -3 0"
VerticalAlignment="Top" HorizontalAlignment="Right"/>
<c:ResizeThumb Width="7" Height="7" Cursor="SizeNESW" Margin="-3 0 0 -3"
VerticalAlignment="Bottom" HorizontalAlignment="Left"/>
<c:ResizeThumb Width="7" Height="7" Cursor="SizeNWSE" Margin="0 0 -3 -3"
VerticalAlignment="Bottom" HorizontalAlignment="Right"/>
</Grid>
</ControlTemplate>-->
<Style TargetType="{x:Type Shape}" x:Key="ThumbCorner">
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="Stroke" Value="#FFC8C8C8" />
<Setter Property="StrokeThickness" Value=".5" />
<Setter Property="Width" Value="7" />
<Setter Property="Height" Value="7" />
<Setter Property="Margin" Value="-2" />
<Setter Property="Fill">
<Setter.Value>
<RadialGradientBrush Center="0.2, 0.2" GradientOrigin="0.2, 0.2" RadiusX="0.8" RadiusY="0.8">
<GradientStop Color="White" Offset="0.0" />
<GradientStop Color="Gray" Offset="0.8" />
</RadialGradientBrush>
</Setter.Value>
</Setter>
</Style>
<!--ResizeDecorator Default Template-->
<ControlTemplate x:Key="ResizeDecoratorTemplate" TargetType="{x:Type Control}">
<Grid>
<Grid Opacity="0" Margin="-3">
<c:RotateThumb x:Name="rotate" Width="7"
Height="7"
Margin="0,-20,0,0"
Cursor="Hand"
VerticalAlignment="Top"
HorizontalAlignment="Center"/>
<c:ResizeThumb Height="3"
Cursor="SizeNS"
VerticalAlignment="Top"
HorizontalAlignment="Stretch"/>
<c:ResizeThumb Width="3"
Cursor="SizeWE"
VerticalAlignment="Stretch"
HorizontalAlignment="Left"/>
<c:ResizeThumb Width="3"
Cursor="SizeWE"
VerticalAlignment="Stretch"
HorizontalAlignment="Right"/>
<c:ResizeThumb Height="3"
Cursor="SizeNS"
VerticalAlignment="Bottom"
HorizontalAlignment="Stretch"/>
<c:ResizeThumb Width="7"
Height="7"
Margin="-2"
Cursor="SizeNWSE"
VerticalAlignment="Top"
HorizontalAlignment="Left"/>
<c:ResizeThumb Width="7"
Height="7"
Margin="-2"
Cursor="SizeNESW"
VerticalAlignment="Top"
HorizontalAlignment="Right"/>
<c:ResizeThumb Width="7"
Height="7"
Margin="-2"
Cursor="SizeNESW"
VerticalAlignment="Bottom"
HorizontalAlignment="Left"/>
<c:ResizeThumb Width="7"
Height="7"
Margin="-2"
Cursor="SizeNWSE"
VerticalAlignment="Bottom"
HorizontalAlignment="Right"/>
</Grid>
<Grid IsHitTestVisible="False" Opacity="1" Margin="-3">
<Rectangle SnapsToDevicePixels="True"
StrokeThickness="1"
Margin="1"
Stroke="Gray"/>
<Line x:Name="line" StrokeThickness="1" X1="0" Y1="0" X2="0" Y2="20"
HorizontalAlignment="Center"
VerticalAlignment="Top"
Margin="0,-19,0,0"
Stroke="Gray"/>
<Ellipse x:Name="top" Style="{StaticResource ThumbCorner}" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="-1,-20,0,0"/>
<Ellipse Style="{StaticResource ThumbCorner}" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Ellipse Style="{StaticResource ThumbCorner}" HorizontalAlignment="Right" VerticalAlignment="Top"/>
<Ellipse Style="{StaticResource ThumbCorner}" HorizontalAlignment="Left" VerticalAlignment="Bottom"/>
<Ellipse Style="{StaticResource ThumbCorner}" HorizontalAlignment="Right" VerticalAlignment="Bottom"/>
</Grid>
</Grid>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding ShowRotate}" Value="false">
<Setter TargetName="rotate" Property="Visibility" Value="Collapsed"/>
<Setter TargetName="line" Property="Visibility" Value="Collapsed"/>
<Setter TargetName="top" Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<ObjectDataProvider x:Key="ConnectorOrientationMenu" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
2023-03-05 21:30:53 +08:00
<x:Type TypeName="dd:ConnectorOrientation" />
2021-07-23 09:42:22 +08:00
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<Style x:Key="CinchMenuItemStyle" TargetType="{x:Type MenuItem}" >
<Setter Property="Header" Value="{Binding Text}" />
<Setter Property="ItemsSource" Value="{Binding Children}" />
<Setter Property="Command" Value="{Binding Command}" />
<Setter Property="CommandParameter" Value="{Binding CommandParameter}" />
</Style>
<!-- Connector Style -->
2023-03-05 21:30:53 +08:00
<Style x:Key="PointConnectorStyle" TargetType="{x:Type dd:PointConnector}">
2021-07-23 09:42:22 +08:00
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="Template">
<Setter.Value>
2023-03-05 21:30:53 +08:00
<ControlTemplate TargetType="{x:Type dd:PointConnector}">
2021-07-23 09:42:22 +08:00
<Grid Width="{Binding ConnectorWidth}" Height="{Binding ConnectorHeight}">
<!-- transparent extra space makes connector easier to hit -->
<Ellipse Fill="Transparent" Margin="-2" />
<Ellipse Fill="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}" StrokeThickness="1" Stroke="{Binding ColorViewModel.LineColor,Converter={StaticResource ColorBrushConverter}}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
2023-03-05 21:30:53 +08:00
<Style x:Key="GifImageConnectorContainer" TargetType="{x:Type dd:ConnectorContainer}">
2021-07-23 09:42:22 +08:00
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ItemsControl}">
<Grid>
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
<Rectangle Fill="#7F243859" Opacity="0.5" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Visibility="{Binding ShouldInsertAnchor, Converter={StaticResource BooleanToVisibilityConverter}}">
<i:Interaction.Behaviors>
2023-03-05 21:30:53 +08:00
<dd:ControlMouseLeftButtonDownCommandBehavior Command="{Binding AddItemCommand}" />
2021-07-23 09:42:22 +08:00
</i:Interaction.Behaviors>
</Rectangle>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
2023-01-31 22:45:50 +08:00
<Style x:Key="ItemsControlStyle" TargetType="{x:Type ItemsControl}">
2021-07-23 09:42:22 +08:00
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ItemsControl}">
<Grid>
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<ControlTemplate x:Key="ConnectorDecoratorTemplate"
TargetType="{x:Type Control}">
<Grid Margin="{Binding ConnectorMargin}">
2023-03-05 21:30:53 +08:00
<dd:Connector
2023-01-29 22:54:06 +08:00
Content="{Binding LeftConnector}"
Cursor="Cross"
SnapsToDevicePixels="True"
Orientation="Left"
VerticalAlignment="Center"
HorizontalAlignment="Left"
2023-03-05 21:30:53 +08:00
Visibility="{Binding Path=ShowConnectors, Converter={x:Static dd:BoolToVisibilityConverter.Instance}}" />
<dd:Connector
2023-01-29 22:54:06 +08:00
Content="{Binding TopLeftConnector}"
Cursor="Cross"
SnapsToDevicePixels="True"
Orientation="TopLeft"
VerticalAlignment="Top"
HorizontalAlignment="Left"
2023-03-05 21:30:53 +08:00
Visibility="{Binding Path=ShowConnectors, Converter={x:Static dd:BoolToVisibilityConverter.Instance}}" />
<dd:Connector
2023-01-29 22:54:06 +08:00
Content="{Binding TopConnector}"
Cursor="Cross"
SnapsToDevicePixels="True"
Orientation="Top"
VerticalAlignment="Top"
HorizontalAlignment="Center"
2023-03-05 21:30:53 +08:00
Visibility="{Binding Path=ShowConnectors, Converter={x:Static dd:BoolToVisibilityConverter.Instance}}" />
<dd:Connector
2023-01-29 22:54:06 +08:00
Content="{Binding TopRightConnector}"
Cursor="Cross"
SnapsToDevicePixels="True"
Orientation="TopRight"
VerticalAlignment="Top"
HorizontalAlignment="Right"
2023-03-05 21:30:53 +08:00
Visibility="{Binding Path=ShowConnectors, Converter={x:Static dd:BoolToVisibilityConverter.Instance}}" />
<dd:Connector
2023-01-29 22:54:06 +08:00
Content="{Binding RightConnector}"
Cursor="Cross"
SnapsToDevicePixels="True"
Orientation="Right"
VerticalAlignment="Center"
HorizontalAlignment="Right"
2023-03-05 21:30:53 +08:00
Visibility="{Binding Path=ShowConnectors, Converter={x:Static dd:BoolToVisibilityConverter.Instance}}" />
<dd:Connector
2023-01-29 22:54:06 +08:00
Content="{Binding BottomRightConnector}"
Cursor="Cross"
SnapsToDevicePixels="True"
Orientation="BottomRight"
VerticalAlignment="Bottom"
HorizontalAlignment="Right"
2023-03-05 21:30:53 +08:00
Visibility="{Binding Path=ShowConnectors, Converter={x:Static dd:BoolToVisibilityConverter.Instance}}" />
<dd:Connector
2023-01-29 22:54:06 +08:00
Content="{Binding BottomConnector}"
Cursor="Cross"
SnapsToDevicePixels="True"
Orientation="Bottom"
VerticalAlignment="Bottom"
HorizontalAlignment="Center"
2023-03-05 21:30:53 +08:00
Visibility="{Binding Path=ShowConnectors, Converter={x:Static dd:BoolToVisibilityConverter.Instance}}" />
<dd:Connector
2023-01-29 22:54:06 +08:00
Content="{Binding BottomLeftConnector}"
Cursor="Cross"
SnapsToDevicePixels="True"
Orientation="BottomLeft"
VerticalAlignment="Bottom"
HorizontalAlignment="Left"
2023-03-05 21:30:53 +08:00
Visibility="{Binding Path=ShowConnectors, Converter={x:Static dd:BoolToVisibilityConverter.Instance}}" />
</Grid>
</ControlTemplate>
<ControlTemplate x:Key="InnerConnectorDecoratorTemplate"
TargetType="{x:Type Control}">
2023-03-05 21:30:53 +08:00
<dd:ConnectorContainer x:Name="PART_ConnectorContainer" Style="{StaticResource ItemsControlStyle}" ItemsSource="{Binding Connectors}" Visibility="{Binding Path=ShowConnectors, Converter={x:Static dd:BoolToVisibilityConverter.Instance}}">
<dd:ConnectorContainer.ItemTemplate>
<DataTemplate>
<Grid>
2023-03-05 21:30:53 +08:00
<dd:Connector
2023-01-31 22:45:50 +08:00
Content="{Binding .}"
Cursor="Cross"
SnapsToDevicePixels="True"/>
</Grid>
</DataTemplate>
2023-03-05 21:30:53 +08:00
</dd:ConnectorContainer.ItemTemplate>
</dd:ConnectorContainer>
</ControlTemplate>
2023-02-14 22:54:55 +08:00
<!--基础类型-->
<Style x:Key="designerItemStyle"
2021-07-23 09:42:22 +08:00
TargetType="{x:Type ContentPresenter}">
2023-02-14 22:54:55 +08:00
<Setter Property="Canvas.Left"
2021-07-23 09:42:22 +08:00
Value="{Binding Left}" />
2023-02-14 22:54:55 +08:00
<Setter Property="Canvas.Top"
Value="{Binding Top}" />
2023-02-14 22:54:55 +08:00
<Setter Property="Canvas.ZIndex"
2021-07-23 09:42:22 +08:00
Value="{Binding ZIndex}" />
2023-03-05 21:30:53 +08:00
<Setter Property="dd:SelectionProps.EnabledForSelection"
2023-02-19 21:38:28 +08:00
Value="{Binding EnabledForSelection}" />
2023-03-05 21:30:53 +08:00
<Setter Property="dd:ItemConnectProps.EnabledForConnection"
2023-02-19 21:38:28 +08:00
Value="{Binding EnabledForConnection}" />
<Setter Property="Visibility"
Value="{Binding Visible,Converter={StaticResource BooleanToVisibilityConverter}}"/>
2023-02-14 22:54:55 +08:00
<Setter Property="Width"
2021-07-23 09:42:22 +08:00
Value="{Binding ItemWidth}" />
2023-02-14 22:54:55 +08:00
<Setter Property="Height"
2023-03-12 15:26:58 +08:00
Value="{Binding ItemHeight}" />
2023-02-14 22:54:55 +08:00
<Setter Property="SnapsToDevicePixels"
2021-07-23 09:42:22 +08:00
Value="True" />
2023-02-14 22:54:55 +08:00
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Grid x:Name="selectedGrid" IsHitTestVisible="{Binding IsHitTestVisible}" >
2023-02-14 22:54:55 +08:00
<Grid.ContextMenu>
<ContextMenu ItemsSource="{Binding MenuOptions}" Visibility="{Binding ShowMenuOptions,Converter={StaticResource BooleanToVisibilityConverter}}">
<ContextMenu.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="MenuItem.Header" Value="{Binding Text}" />
<Setter Property="MenuItem.ItemsSource" Value="{Binding Children}" />
<Setter Property="MenuItem.Command" Value="{Binding Command}" />
<Setter Property="MenuItem.Icon" Value="{Binding Icon}" />
<Setter Property="CommandParameter" Value="{Binding CommandParameter}" />
<Setter Property="MenuItem.IsCheckable" Value="{Binding IsCheckable}" />
<Setter Property="MenuItem.IsChecked" Value="{Binding IsChecked}" />
</Style>
</ContextMenu.ItemContainerStyle>
</ContextMenu>
</Grid.ContextMenu>
<!-- PART_DragThumb -->
<c:DragThumb x:Name="PART_DragThumb"
2021-07-23 09:42:22 +08:00
Cursor="SizeAll" >
2023-02-14 22:54:55 +08:00
<c:DragThumb.InputBindings>
<MouseBinding MouseAction="LeftDoubleClick" Command="{Binding EditCommand}" CommandParameter="{Binding }" />
</c:DragThumb.InputBindings>
</c:DragThumb>
<Grid RenderTransformOrigin="0.5,0.5">
<!-- PART_ResizeDecorator -->
<Control x:Name="PART_ResizeDecorator"
2021-07-23 09:42:22 +08:00
Visibility="Collapsed"
Template="{StaticResource ResizeDecoratorTemplate}"/>
2023-02-14 22:54:55 +08:00
<!-- PART_ContentPresenter -->
<ContentPresenter x:Name="PART_ContentPresenter"
2021-07-23 09:42:22 +08:00
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Content="{TemplateBinding Content}" />
2023-02-19 21:38:28 +08:00
<Control x:Name="PART_Text" Margin="1" IsHitTestVisible="{Binding IsReadOnlyText,Converter={StaticResource InvertBoolConverter}}">
2023-02-14 22:54:55 +08:00
<Control.Style>
<Style TargetType="Control">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid/>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding ShowText}" Value="True">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
2023-03-05 21:30:53 +08:00
<dd:TextControl x:Name="PART_Text" />
2023-02-14 22:54:55 +08:00
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Text,Converter={StaticResource NotNullOrEmptyToBoolConverter}}" Value="True">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
2023-03-05 21:30:53 +08:00
<dd:TextControl x:Name="PART_Text" />
2023-02-14 22:54:55 +08:00
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding CustomText}" Value="True">
2021-07-23 09:42:22 +08:00
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid/>
</ControlTemplate>
</Setter.Value>
</Setter>
2023-02-14 22:54:55 +08:00
</DataTrigger>
</Style.Triggers>
</Style>
</Control.Style>
</Control>
<!-- PART_ConnectorDecorator -->
<Control x:Name="PART_ConnectorDecorator" Template="{StaticResource ConnectorDecoratorTemplate}"/>
<Grid.RenderTransform>
<TransformGroup>
<RotateTransform Angle="{Binding Angle}" />
<ScaleTransform x:Name="scale" ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}"></ScaleTransform>
</TransformGroup>
</Grid.RenderTransform>
</Grid>
</Grid>
<DataTemplate.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Value="True" Binding="{Binding IsSelected}"/>
<Condition Value="{x:Static sys:Guid.Empty}" Binding="{Binding ParentId}"/>
</MultiDataTrigger.Conditions>
<Setter TargetName="PART_ResizeDecorator" Property="Visibility" Value="Visible"/>
</MultiDataTrigger>
2023-03-07 22:59:27 +08:00
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Value="True" Binding="{Binding IsSelected}"/>
<Condition Value="True" Binding="{Binding AlwayForResized}"/>
</MultiDataTrigger.Conditions>
<Setter TargetName="PART_ResizeDecorator" Property="Visibility" Value="Visible"/>
</MultiDataTrigger>
2023-02-14 22:54:55 +08:00
<Trigger Property="IsMouseOver"
2021-07-23 09:42:22 +08:00
Value="true">
2023-02-14 22:54:55 +08:00
<Setter TargetName="PART_ConnectorDecorator" Property="Visibility" Value="Visible"/>
</Trigger>
<DataTrigger Value="0"
2021-07-23 09:42:22 +08:00
Binding="{Binding Connectors.Count}">
2023-02-14 22:54:55 +08:00
<Setter TargetName="PART_ConnectorDecorator" Property="Visibility" Value="Collapsed" />
</DataTrigger>
2023-02-16 19:21:37 +08:00
<DataTrigger Value="True" Binding="{Binding IsInnerConnector}">
2023-02-14 22:54:55 +08:00
<Setter TargetName="PART_ConnectorDecorator" Property="Template" Value="{StaticResource InnerConnectorDecoratorTemplate}" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect BlurRadius="10" Color="{Binding ColorViewModel.ShadowColor}"/>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding ColorViewModel.ShadowColor}" Value="Transparent">
<Setter Property="Effect" Value="{x:Null}"/>
</DataTrigger>
</Style.Triggers>
</Style>
<!--连接线-->
<Style x:Key="connectorItemStyle"
2021-07-23 09:42:22 +08:00
TargetType="{x:Type ContentPresenter}">
2023-02-14 22:54:55 +08:00
<Setter Property="Width"
2021-07-23 09:42:22 +08:00
Value="{Binding Area.Width}" />
2023-02-14 22:54:55 +08:00
<Setter Property="Height"
2021-07-23 09:42:22 +08:00
Value="{Binding Area.Height}" />
2023-02-14 22:54:55 +08:00
<Setter Property="Canvas.Top"
2021-07-23 09:42:22 +08:00
Value="{Binding Area.Top}" />
2023-02-14 22:54:55 +08:00
<Setter Property="Canvas.Left"
2021-07-23 09:42:22 +08:00
Value="{Binding Area.Left}" />
2023-02-14 22:54:55 +08:00
<Setter Property="Canvas.ZIndex"
2021-07-23 09:42:22 +08:00
Value="{Binding ZIndex}" />
<Setter Property="dd:SelectionProps.EnabledForSelection"
Value="{Binding EnabledForSelection}" />
2023-02-19 21:38:28 +08:00
<Setter Property="Visibility"
Value="{Binding Visible,Converter={StaticResource BooleanToVisibilityConverter}}"/>
2023-02-14 22:54:55 +08:00
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Grid x:Name="selectedGrid">
<Grid.InputBindings>
<MouseBinding MouseAction="LeftDoubleClick" Command="{Binding EditCommand}" CommandParameter="{Binding }" />
</Grid.InputBindings>
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header="删除" Command="{Binding DeleteConnectionCommand}" CommandParameter="{Binding}"/>
<MenuItem Header="添加文本" Command="{Binding AddLabelCommand}" CommandParameter="{Binding}"/>
2023-03-05 21:30:53 +08:00
<MenuItem Header="插入点(按住ctrl可一直插入)" IsCheckable="True" IsChecked="{Binding ShouldInsertAnchor}" IsEnabled="{Binding IsReadOnly,Converter={dd:InvertBoolConverter}}" />
2023-02-14 22:54:55 +08:00
</ContextMenu>
</Grid.ContextMenu>
2023-03-05 21:30:53 +08:00
<dd:LineControl x:Name="line"/>
2023-02-14 22:54:55 +08:00
<!-- PART_DragThumb -->
<c:DragThumb x:Name="PART_DragThumb" Margin="8"
2021-07-23 09:42:22 +08:00
Cursor="SizeAll" >
2023-02-14 22:54:55 +08:00
<c:DragThumb.InputBindings>
<MouseBinding MouseAction="LeftDoubleClick" Command="{Binding EditCommand}" CommandParameter="{Binding }" />
</c:DragThumb.InputBindings>
</c:DragThumb>
2023-03-05 21:30:53 +08:00
<dd:PointContainer x:Name="PART_VerticesContainer" Style="{StaticResource ItemsControlStyle}" ItemsSource="{Binding Vertices}" Visibility="Collapsed">
<dd:PointContainer.ItemTemplate>
2023-02-14 22:54:55 +08:00
<DataTemplate>
<Grid>
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header="删除" Command="{Binding DeleteVertexCommand}" CommandParameter="{Binding}"/>
</ContextMenu>
</Grid.ContextMenu>
2023-03-05 21:30:53 +08:00
<dd:PointConnector Style="{StaticResource PointConnectorStyle}"/>
2023-02-14 22:54:55 +08:00
<c:PointDragThumb Cursor="SizeAll" Opacity="0"/>
</Grid>
</DataTemplate>
2023-03-05 21:30:53 +08:00
</dd:PointContainer.ItemTemplate>
<dd:PointContainer.Resources>
2023-02-14 22:54:55 +08:00
<Style TargetType="{x:Type ContentPresenter}">
<Setter Property="Canvas.Left" Value="{Binding Left}" />
<Setter Property="Canvas.Top" Value="{Binding Top}" />
</Style>
2023-03-05 21:30:53 +08:00
</dd:PointContainer.Resources>
</dd:PointContainer>
2023-02-14 22:54:55 +08:00
2023-03-05 21:30:53 +08:00
<dd:PointContainer x:Name="PART_LabelsContainer" Style="{StaticResource ItemsControlStyle}" ItemsSource="{Binding Labels}" >
<dd:PointContainer.ItemTemplate>
2023-02-14 22:54:55 +08:00
<DataTemplate>
2023-03-05 21:30:53 +08:00
<Grid dd:SelectionProps.EnabledForSelection="True" Background="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}">
2023-02-14 22:54:55 +08:00
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header="删除" Command="{Binding DeleteLabelCommand}" CommandParameter="{Binding}"/>
</ContextMenu>
</Grid.ContextMenu>
<c:PointDragThumb Cursor="SizeAll" Opacity="0">
<c:PointDragThumb.InputBindings>
<MouseBinding MouseAction="LeftDoubleClick" Command="{Binding EditCommand}" CommandParameter="{Binding }" />
</c:PointDragThumb.InputBindings>
</c:PointDragThumb>
2023-03-05 21:30:53 +08:00
<dd:TextControl Margin="5" />
2023-02-14 22:54:55 +08:00
</Grid>
</DataTemplate>
2023-03-05 21:30:53 +08:00
</dd:PointContainer.ItemTemplate>
<dd:PointContainer.Resources>
2023-02-14 22:54:55 +08:00
<Style TargetType="{x:Type ContentPresenter}">
<Setter Property="Canvas.Left" Value="{Binding Left}" />
<Setter Property="Canvas.Top" Value="{Binding Top}" />
</Style>
2023-03-05 21:30:53 +08:00
</dd:PointContainer.Resources>
</dd:PointContainer>
2023-02-14 22:54:55 +08:00
<Rectangle Fill="#7F243859" Opacity="0.5" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Visibility="{Binding ShouldInsertAnchor, Converter={StaticResource BooleanToVisibilityConverter}}">
<i:Interaction.Behaviors>
2023-03-05 21:30:53 +08:00
<dd:ControlMouseLeftButtonDownCommandBehavior Command="{Binding AddVertexCommand}" />
2023-02-14 22:54:55 +08:00
</i:Interaction.Behaviors>
</Rectangle>
</Grid>
<DataTemplate.Triggers>
<DataTrigger Value="True"
2021-07-23 09:42:22 +08:00
Binding="{Binding IsSelected}">
2023-02-14 22:54:55 +08:00
<Setter TargetName="PART_VerticesContainer"
2023-01-15 11:59:51 +08:00
Property="Visibility"
Value="Visible"/>
2023-02-14 22:54:55 +08:00
</DataTrigger>
2023-01-15 11:59:51 +08:00
2023-02-14 22:54:55 +08:00
<DataTrigger Value="True"
2023-01-15 11:59:51 +08:00
Binding="{Binding ShouldInsertAnchor}">
2023-02-14 22:54:55 +08:00
<Setter TargetName="PART_VerticesContainer"
2023-01-15 11:59:51 +08:00
Property="Visibility"
Value="Visible"/>
2023-02-14 22:54:55 +08:00
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
<!--自带的Gif样式-->
<Style x:Key="gifimageItemStyle"
2021-07-23 09:42:22 +08:00
TargetType="{x:Type ContentPresenter}">
2023-02-14 22:54:55 +08:00
<Setter Property="Canvas.Top"
2021-07-23 09:42:22 +08:00
Value="{Binding Top}" />
2023-02-14 22:54:55 +08:00
<Setter Property="Canvas.Left"
2021-07-23 09:42:22 +08:00
Value="{Binding Left}" />
2023-02-14 22:54:55 +08:00
<Setter Property="Canvas.ZIndex"
2021-07-23 09:42:22 +08:00
Value="{Binding ZIndex}" />
2023-03-05 21:30:53 +08:00
<Setter Property="dd:SelectionProps.EnabledForSelection"
2023-02-19 21:38:28 +08:00
Value="{Binding EnabledForSelection}" />
2023-03-05 21:30:53 +08:00
<Setter Property="dd:ItemConnectProps.EnabledForConnection"
2023-02-19 21:38:28 +08:00
Value="{Binding EnabledForConnection}" />
<Setter Property="Visibility"
Value="{Binding Visible,Converter={StaticResource BooleanToVisibilityConverter}}"/>
2023-02-14 22:54:55 +08:00
<Setter Property="Width"
2021-07-23 09:42:22 +08:00
Value="{Binding ItemWidth}" />
2023-02-14 22:54:55 +08:00
<Setter Property="Height"
2021-07-23 09:42:22 +08:00
Value="{Binding ItemHeight}" />
2023-02-14 22:54:55 +08:00
<Setter Property="SnapsToDevicePixels"
2021-07-23 09:42:22 +08:00
Value="True" />
2023-02-14 22:54:55 +08:00
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Grid x:Name="selectedGrid" IsHitTestVisible="{Binding IsHitTestVisible}">
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header="插入点" IsCheckable="True" IsChecked="{Binding ShouldInsertAnchor}" />
<MenuItem Header="选择" ItemsSource="{Binding MenuOptions}" ItemContainerStyle="{StaticResource CinchMenuItemStyle}"/>
</ContextMenu>
</Grid.ContextMenu>
<!-- PART_DragThumb -->
<c:DragThumb x:Name="PART_DragThumb"
2021-07-23 09:42:22 +08:00
Cursor="SizeAll" />
2023-02-14 22:54:55 +08:00
<Grid RenderTransformOrigin="0.5,0.5">
<!-- PART_ResizeDecorator -->
<Control x:Name="PART_ResizeDecorator"
2021-07-23 09:42:22 +08:00
Visibility="Collapsed"
Template="{StaticResource ResizeDecoratorTemplate}"/>
2023-02-14 22:54:55 +08:00
<!-- PART_ContentPresenter -->
<ContentPresenter x:Name="PART_ContentPresenter"
2021-07-23 09:42:22 +08:00
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Content="{TemplateBinding Content}" />
2023-02-14 22:54:55 +08:00
<!-- PART_ConnectorDecorator -->
2023-03-05 21:30:53 +08:00
<dd:ConnectorContainer x:Name="PART_ConnectorContainer" Visibility="Hidden" Style="{StaticResource GifImageConnectorContainer}" ItemsSource="{Binding Connectors}">
<dd:ConnectorContainer.ItemTemplate>
2023-02-14 22:54:55 +08:00
<DataTemplate>
2023-03-05 21:30:53 +08:00
<dd:Connector Content="{Binding .}" Cursor="Cross" SnapsToDevicePixels="True"/>
2023-02-14 22:54:55 +08:00
</DataTemplate>
2023-03-05 21:30:53 +08:00
</dd:ConnectorContainer.ItemTemplate>
</dd:ConnectorContainer>
2023-02-14 22:54:55 +08:00
<Grid.RenderTransform>
<TransformGroup>
<RotateTransform Angle="{Binding Angle}" />
<ScaleTransform x:Name="scale" ScaleX="{Binding ScaleX}" ScaleY="{Binding ScaleY}"></ScaleTransform>
</TransformGroup>
</Grid.RenderTransform>
</Grid>
</Grid>
<DataTemplate.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Value="True" Binding="{Binding IsSelected}"/>
<Condition Value="{x:Static sys:Guid.Empty}" Binding="{Binding ParentId}"/>
</MultiDataTrigger.Conditions>
<Setter TargetName="PART_ResizeDecorator" Property="Visibility" Value="Visible"/>
</MultiDataTrigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="PART_ConnectorContainer" Property="Visibility" Value="Visible" />
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
<!--自带的logical样式-->
<Style x:Key="logicalItemStyle"
2021-07-23 09:42:22 +08:00
TargetType="{x:Type ContentPresenter}">
2023-02-14 22:54:55 +08:00
<Setter Property="Canvas.Top"
2021-07-23 09:42:22 +08:00
Value="{Binding Top}" />
2023-02-14 22:54:55 +08:00
<Setter Property="Canvas.Left"
2021-07-23 09:42:22 +08:00
Value="{Binding Left}" />
2023-02-14 22:54:55 +08:00
<Setter Property="Canvas.ZIndex"
2021-07-23 09:42:22 +08:00
Value="{Binding ZIndex}" />
2023-03-05 21:30:53 +08:00
<Setter Property="dd:SelectionProps.EnabledForSelection"
2023-02-19 21:38:28 +08:00
Value="{Binding EnabledForSelection}" />
2023-03-05 21:30:53 +08:00
<Setter Property="dd:ItemConnectProps.EnabledForConnection"
2023-02-19 21:38:28 +08:00
Value="{Binding EnabledForConnection}" />
<Setter Property="Visibility"
Value="{Binding Visible,Converter={StaticResource BooleanToVisibilityConverter}}"/>
2023-02-14 22:54:55 +08:00
<Setter Property="Width"
2021-07-23 09:42:22 +08:00
Value="{Binding ItemWidth}" />
2023-02-14 22:54:55 +08:00
<Setter Property="Height"
2021-07-23 09:42:22 +08:00
Value="{Binding ItemHeight}" />
2023-02-14 22:54:55 +08:00
<Setter Property="SnapsToDevicePixels"
2021-07-23 09:42:22 +08:00
Value="True" />
2023-02-14 22:54:55 +08:00
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Grid x:Name="selectedGrid">
<Grid.ContextMenu>
<ContextMenu ItemsSource="{Binding MenuOptions}" Visibility="{Binding ShowMenuOptions,Converter={StaticResource BooleanToVisibilityConverter}}">
<ContextMenu.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="MenuItem.Header" Value="{Binding Text}" />
<Setter Property="MenuItem.ItemsSource" Value="{Binding Children}" />
<Setter Property="MenuItem.Command" Value="{Binding Command}" />
<Setter Property="MenuItem.Icon" Value="{Binding Icon}" />
<Setter Property="CommandParameter" Value="{Binding CommandParameter}" />
<Setter Property="MenuItem.IsCheckable" Value="{Binding IsCheckable}" />
<Setter Property="MenuItem.IsChecked" Value="{Binding IsChecked}" />
</Style>
</ContextMenu.ItemContainerStyle>
</ContextMenu>
</Grid.ContextMenu>
<!--PART_ConnectorDecorator-->
2023-03-05 21:30:53 +08:00
<dd:ConnectorContainer x:Name="PART_ConnectorContainer" Style="{StaticResource ItemsControlStyle}" ItemsSource="{Binding Connectors}" Margin="0,0,0,0">
<dd:ConnectorContainer.ItemTemplate>
2023-02-14 22:54:55 +08:00
<DataTemplate>
<Grid>
2023-03-05 21:30:53 +08:00
<dd:Connector Content="{Binding .}" Cursor="Cross" SnapsToDevicePixels="True"/>
2023-02-14 22:54:55 +08:00
</Grid>
</DataTemplate>
2023-03-05 21:30:53 +08:00
</dd:ConnectorContainer.ItemTemplate>
</dd:ConnectorContainer>
2023-02-14 22:54:55 +08:00
<!-- PART_DragThumb -->
<c:DragThumb x:Name="PART_DragThumb"
2021-07-23 09:42:22 +08:00
Cursor="SizeAll" >
2023-02-14 22:54:55 +08:00
<c:DragThumb.InputBindings>
<MouseBinding MouseAction="LeftDoubleClick" Command="{Binding EditCommand}" CommandParameter="{Binding }" />
</c:DragThumb.InputBindings>
</c:DragThumb>
<!-- PART_ResizeDecorator -->
<Control x:Name="PART_ResizeDecorator"
2021-07-23 09:42:22 +08:00
Visibility="Collapsed"
Template="{StaticResource ResizeDecoratorTemplate}"/>
2023-02-14 22:54:55 +08:00
<!-- PART_ContentPresenter -->
<ContentPresenter x:Name="PART_ContentPresenter"
2021-07-23 09:42:22 +08:00
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Content="{TemplateBinding Content}" />
2023-02-14 22:54:55 +08:00
</Grid>
<DataTemplate.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Value="True" Binding="{Binding IsSelected}"/>
<Condition Value="{x:Static sys:Guid.Empty}" Binding="{Binding ParentId}"/>
</MultiDataTrigger.Conditions>
<Setter TargetName="PART_ResizeDecorator" Property="Visibility" Value="Visible"/>
</MultiDataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="pointItemStyle"
2021-07-23 09:42:22 +08:00
TargetType="{x:Type ContentPresenter}">
2023-02-14 22:54:55 +08:00
<Setter Property="Canvas.Top"
2021-07-23 09:42:22 +08:00
Value="{Binding Top}" />
2023-02-14 22:54:55 +08:00
<Setter Property="Canvas.Left"
2021-07-23 09:42:22 +08:00
Value="{Binding Left}" />
2023-02-14 22:54:55 +08:00
<Setter Property="Canvas.ZIndex"
2021-07-23 09:42:22 +08:00
Value="{Binding ZIndex}" />
2023-03-05 21:30:53 +08:00
<Setter Property="dd:SelectionProps.EnabledForSelection"
2023-02-19 21:38:28 +08:00
Value="{Binding EnabledForSelection}" />
<Setter Property="Visibility"
Value="{Binding Visible,Converter={StaticResource BooleanToVisibilityConverter}}"/>
2023-02-14 22:54:55 +08:00
<Setter Property="Width"
2021-07-23 09:42:22 +08:00
Value="{Binding ItemWidth}" />
2023-02-14 22:54:55 +08:00
<Setter Property="Height"
2021-07-23 09:42:22 +08:00
Value="{Binding ItemHeight}" />
2023-02-14 22:54:55 +08:00
<Setter Property="SnapsToDevicePixels"
2021-07-23 09:42:22 +08:00
Value="True" />
2023-02-14 22:54:55 +08:00
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
2023-03-05 21:30:53 +08:00
<Grid x:Name="selectedGrid" Visibility="{Binding Path=ShowConnectors, Converter={x:Static dd:BoolToVisibilityConverter.Instance}}">
2023-02-14 22:54:55 +08:00
<!-- PART_ConnectorDecorator -->
<Grid Margin="-5"
2021-07-23 09:42:22 +08:00
x:Name="PART_ConnectorDecorator">
2023-03-05 21:30:53 +08:00
<dd:PointConnector DataContext="{Binding TopConnector}" Style="{StaticResource PointConnectorStyle}"/>
2023-02-14 22:54:55 +08:00
</Grid>
<!-- PART_DragThumb -->
<c:DragThumb x:Name="PART_DragThumb"
2021-07-23 09:42:22 +08:00
Cursor="SizeAll" />
2023-02-14 22:54:55 +08:00
</Grid>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver"
2021-07-23 09:42:22 +08:00
Value="true">
2023-02-14 22:54:55 +08:00
<Setter TargetName="PART_ConnectorDecorator" Property="Visibility" Value="Visible"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="linkpointItemStyle"
2021-07-23 09:42:22 +08:00
TargetType="{x:Type ContentPresenter}">
2023-02-14 22:54:55 +08:00
<Setter Property="Canvas.Top"
2021-07-23 09:42:22 +08:00
Value="{Binding Top}" />
2023-02-14 22:54:55 +08:00
<Setter Property="Canvas.Left"
2021-07-23 09:42:22 +08:00
Value="{Binding Left}" />
2023-02-14 22:54:55 +08:00
<Setter Property="Canvas.ZIndex"
2021-07-23 09:42:22 +08:00
Value="{Binding ZIndex}" />
2023-03-05 21:30:53 +08:00
<Setter Property="dd:SelectionProps.EnabledForSelection"
2023-02-19 21:38:28 +08:00
Value="{Binding EnabledForSelection}" />
2023-03-05 21:30:53 +08:00
<Setter Property="dd:ItemConnectProps.EnabledForConnection"
2023-02-19 21:38:28 +08:00
Value="{Binding EnabledForConnection}" />
<Setter Property="Visibility"
Value="{Binding Visible,Converter={StaticResource BooleanToVisibilityConverter}}"/>
2023-02-14 22:54:55 +08:00
<Setter Property="Width"
2021-07-23 09:42:22 +08:00
Value="{Binding ItemWidth}" />
2023-02-14 22:54:55 +08:00
<Setter Property="Height"
2021-07-23 09:42:22 +08:00
Value="{Binding ItemHeight}" />
2023-02-14 22:54:55 +08:00
<Setter Property="SnapsToDevicePixels"
2021-07-23 09:42:22 +08:00
Value="True" />
2023-02-14 22:54:55 +08:00
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Grid x:Name="selectedGrid">
2021-07-23 09:42:22 +08:00
2023-02-14 22:54:55 +08:00
<!-- PART_ConnectorDecorator -->
<Grid Margin="-5"
2021-07-23 09:42:22 +08:00
x:Name="PART_ConnectorDecorator">
2023-03-05 21:30:53 +08:00
<dd:Connector Content="{Binding Connectors[0]}"
2023-01-31 22:45:50 +08:00
Cursor="Cross"
SnapsToDevicePixels="True"
2021-07-23 09:42:22 +08:00
VerticalAlignment="Center"
HorizontalAlignment="Center"
2023-03-05 21:30:53 +08:00
Visibility="{Binding Path=ShowConnectors, Converter={x:Static dd:BoolToVisibilityConverter.Instance}}" />
2023-02-14 22:54:55 +08:00
</Grid>
<!-- PART_DragThumb -->
<c:DragThumb x:Name="PART_DragThumb"
2021-07-23 09:42:22 +08:00
Cursor="SizeAll" />
2023-02-14 22:54:55 +08:00
</Grid>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver"
2021-07-23 09:42:22 +08:00
Value="true">
2023-02-14 22:54:55 +08:00
<Setter TargetName="PART_ConnectorDecorator" Property="Visibility" Value="Visible"/>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
</UserControl.Resources>
<Border>
<Control x:Name="control">
<Control.Style>
<Style TargetType="Control">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid>
<ItemsControl ItemsSource="{Binding Items}"
2023-03-12 15:26:58 +08:00
ItemContainerStyleSelector="{x:Static dd:DesignerItemsControlItemStyleSelector.Instance}">
2023-02-14 22:54:55 +08:00
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
2023-03-05 21:30:53 +08:00
<dd:DesignerCanvas
2023-03-12 15:26:58 +08:00
Height="{Binding PageSize.Height}"
Width="{Binding PageSize.Width}"
ShowGrid="{Binding ShowGrid}"
GridCellSize="{Binding GridCellSize}"
GridMarginSize="{Binding GridMarginSize}"
GridColor="{Binding GridColor}"
Background="{Binding PageBackground,Converter={StaticResource ColorBrushConverter}}"
AllowDrop="{Binding AllowDrop}">
2023-03-05 21:30:53 +08:00
<dd:DesignerCanvas.LayoutTransform>
2023-02-14 22:54:55 +08:00
<ScaleTransform ScaleX="{Binding ZoomValue}" ScaleY="{Binding ZoomValue}" />
2023-03-12 22:47:45 +08:00
</dd:DesignerCanvas.LayoutTransform>
2023-03-05 21:30:53 +08:00
</dd:DesignerCanvas>
2023-02-14 22:54:55 +08:00
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding DefaultZoomBox}" Value="true">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid>
<ScrollViewer Name="DesignerScrollViewer"
Background="Transparent"
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto"
Focusable="False">
2023-02-14 22:54:55 +08:00
<ItemsControl x:Name="diagram" ItemsSource="{Binding Items}"
2023-03-12 15:26:58 +08:00
ItemContainerStyleSelector="{x:Static dd:DesignerItemsControlItemStyleSelector.Instance}">
2023-02-14 22:54:55 +08:00
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
2023-03-05 21:30:53 +08:00
<dd:DesignerCanvas
2023-03-12 15:26:58 +08:00
Height="{Binding PageSize.Height}"
Width="{Binding PageSize.Width}"
ShowGrid="{Binding ShowGrid}"
GridCellSize="{Binding GridCellSize}"
GridMarginSize="{Binding GridMarginSize}"
GridColor="{Binding GridColor}"
Background="{Binding PageBackground,Converter={StaticResource ColorBrushConverter}}"
2023-03-12 22:47:45 +08:00
AllowDrop="{Binding AllowDrop}">
2023-03-05 21:30:53 +08:00
<dd:DesignerCanvas.LayoutTransform>
2023-02-14 22:54:55 +08:00
<ScaleTransform ScaleX="{Binding ZoomValue}" ScaleY="{Binding ZoomValue}" />
2023-03-05 21:30:53 +08:00
</dd:DesignerCanvas.LayoutTransform>
</dd:DesignerCanvas>
2023-02-14 22:54:55 +08:00
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ScrollViewer>
2023-03-05 21:30:53 +08:00
<dd:ZoomBox x:Name="zoomBox"
2023-02-14 22:54:55 +08:00
Width="180"
2023-03-11 12:40:44 +08:00
HorizontalAlignment="Left"
2023-02-14 22:54:55 +08:00
VerticalAlignment="Bottom"
DesignerCanvas="{Binding ElementName=diagram}"
MaximumZoomValue="{Binding MaximumZoomValue,Mode=TwoWay}"
MinimumZoomValue="{Binding MinimumZoomValue,Mode=TwoWay}"
ZoomValue="{Binding ZoomValue,Mode=TwoWay}"
2023-03-12 22:47:45 +08:00
FitViewModel="{Binding FitViewModel}"
Margin="5,0,0,5" />
2023-02-14 22:54:55 +08:00
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Control.Style>
</Control>
2021-07-23 09:42:22 +08:00
</Border>
</UserControl>