添加节点可删除

This commit is contained in:
艾竹
2023-01-23 15:43:44 +08:00
parent bb2882c618
commit 2c76aacc66
13 changed files with 158 additions and 45 deletions

View File

@@ -23,7 +23,8 @@
<s:LineDashConverter x:Key="LineDashConverter"/>
<s:ClipConverter x:Key="ClipConverter"/>
<s:InvertBoolConverter x:Key="InvertBoolConverter"/>
<s:ConectorStyleConverter x:Key="ConectorStyleConverter"/>
<!-- ResizeDecorator Default Template -->
<!--
<ControlTemplate x:Key="ResizeDecoratorTemplate" TargetType="{x:Type Control}">
@@ -155,7 +156,7 @@
</Style>
<!-- Connector Style -->
<Style x:Key="normalConnector" TargetType="{x:Type s:Connector}">
<Style x:Key="DefaultConnectorStyle" TargetType="{x:Type s:Connector}">
<Setter Property="Cursor" Value="Cross" />
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="Template">
@@ -187,7 +188,7 @@
</Style>
<!-- Connector Style -->
<Style x:Key="logicalConnector" TargetType="{x:Type s:Connector}">
<Style x:Key="LogicalConnectorStyle" TargetType="{x:Type s:Connector}">
<Setter Property="Cursor" Value="Cross" />
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="Template">
@@ -274,22 +275,6 @@
</Setter>
</Style>
<!-- Connector Style -->
<Style x:Key="pointConnector1" TargetType="{x:Type s:PointConnector}">
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type s:PointConnector}">
<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>
<Style x:Key="normalConnectorContainer" TargetType="{x:Type s:ConnectorContainer}">
<Setter Property="Template">
<Setter.Value>
@@ -326,22 +311,22 @@
<ControlTemplate x:Key="ConnectorDecoratorTemplate"
TargetType="{x:Type Control}">
<Grid Margin="-5">
<s:Connector DataContext="{Binding LeftConnector}" Style="{StaticResource normalConnector}"
<s:Connector DataContext="{Binding LeftConnector}" Style="{Binding Style, Converter={StaticResource ConectorStyleConverter},ConverterParameter={StaticResource DefaultConnectorStyle}}"
Orientation="Left"
VerticalAlignment="Center"
HorizontalAlignment="Left"
Visibility="{Binding Path=ShowConnectors, Converter={x:Static s:BoolToVisibilityConverter.Instance}}" />
<s:Connector DataContext="{Binding TopConnector}" Style="{StaticResource normalConnector}"
<s:Connector DataContext="{Binding TopConnector}" Style="{Binding Style, Converter={StaticResource ConectorStyleConverter},ConverterParameter={StaticResource DefaultConnectorStyle}}"
Orientation="Top"
VerticalAlignment="Top"
HorizontalAlignment="Center"
Visibility="{Binding Path=ShowConnectors, Converter={x:Static s:BoolToVisibilityConverter.Instance}}" />
<s:Connector DataContext="{Binding RightConnector}" Style="{StaticResource normalConnector}"
<s:Connector DataContext="{Binding RightConnector}" Style="{Binding Style, Converter={StaticResource ConectorStyleConverter},ConverterParameter={StaticResource DefaultConnectorStyle}}"
Orientation="Right"
VerticalAlignment="Center"
HorizontalAlignment="Right"
Visibility="{Binding Path=ShowConnectors, Converter={x:Static s:BoolToVisibilityConverter.Instance}}" />
<s:Connector DataContext="{Binding BottomConnector}" Style="{StaticResource normalConnector}"
<s:Connector DataContext="{Binding BottomConnector}" Style="{Binding Style, Converter={StaticResource ConectorStyleConverter},ConverterParameter={StaticResource DefaultConnectorStyle}}"
Orientation="Bottom"
VerticalAlignment="Bottom"
HorizontalAlignment="Center"
@@ -355,7 +340,7 @@
<s:ConnectorContainer.ItemTemplate>
<DataTemplate>
<Grid>
<s:Connector Style="{StaticResource normalConnector}"/>
<s:Connector Style="{StaticResource DefaultConnectorStyle}"/>
</Grid>
</DataTemplate>
</s:ConnectorContainer.ItemTemplate>
@@ -373,6 +358,8 @@
<ItemsControl ItemsSource="{Binding Items}"
ItemContainerStyleSelector="{x:Static s:DesignerItemsControlItemStyleSelector.Instance}">
<ItemsControl.Resources>
<!--基础类型-->
<Style x:Key="designerItemStyle"
TargetType="{x:Type ContentPresenter}">
<Setter Property="Canvas.Left"
@@ -509,6 +496,7 @@
</Style.Triggers>
</Style>
<!--连接线-->
<Style x:Key="connectorItemStyle"
TargetType="{x:Type ContentPresenter}">
<Setter Property="Width"
@@ -530,7 +518,7 @@
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header="删除" Command="{Binding DeleteConnectionCommand}" CommandParameter="{Binding}"/>
<MenuItem Header="添加文本" Command="{Binding AddTextCommand}" CommandParameter="{Binding}"/>
<MenuItem Header="添加文本" Command="{Binding AddLabelCommand}" CommandParameter="{Binding}"/>
<MenuItem Header="插入点(按住ctrl可一直插入)" IsCheckable="True" IsChecked="{Binding ShouldInsertAnchor}" />
</ContextMenu>
</Grid.ContextMenu>
@@ -600,7 +588,12 @@
<s:PointContainer.ItemTemplate>
<DataTemplate>
<Grid>
<s:PointConnector Style="{StaticResource pointConnector1}"/>
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header="删除" Command="{Binding DeleteVertexCommand}" CommandParameter="{Binding}"/>
</ContextMenu>
</Grid.ContextMenu>
<s:PointConnector Style="{StaticResource pointConnector}"/>
<c:PointDragThumb Cursor="SizeAll" Opacity="0"/>
</Grid>
</DataTemplate>
@@ -617,6 +610,11 @@
<s:PointContainer.ItemTemplate>
<DataTemplate>
<Grid s:SelectionProps.EnabledForSelection="True" Background="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}">
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header="删除" Command="{Binding DeleteLabelCommand}" CommandParameter="{Binding}"/>
</ContextMenu>
</Grid.ContextMenu>
<c:PointDragThumb Cursor="SizeAll" Opacity="0"/>
<s:TextControl Margin="5" />
</Grid>
@@ -691,6 +689,7 @@
</Setter>
</Style>
<!--自带的Gif样式-->
<Style x:Key="gifimageItemStyle"
TargetType="{x:Type ContentPresenter}">
<Setter Property="Canvas.Top"
@@ -736,7 +735,7 @@
<s:ConnectorContainer x:Name="PART_ConnectorContainer" Visibility="Hidden" Style="{StaticResource normalConnectorContainer}" ItemsSource="{Binding Connectors}">
<s:ConnectorContainer.ItemTemplate>
<DataTemplate>
<s:Connector Style="{StaticResource normalConnector}"/>
<s:Connector Style="{StaticResource DefaultConnectorStyle}"/>
</DataTemplate>
</s:ConnectorContainer.ItemTemplate>
</s:ConnectorContainer>
@@ -768,6 +767,7 @@
</Setter>
</Style>
<!--自带的logical样式-->
<Style x:Key="logicalItemStyle"
TargetType="{x:Type ContentPresenter}">
<Setter Property="Canvas.Top"
@@ -811,7 +811,7 @@
<s:ConnectorContainer.ItemTemplate>
<DataTemplate>
<Grid>
<s:Connector Style="{StaticResource logicalConnector}"/>
<s:Connector Style="{StaticResource LogicalConnectorStyle}"/>
</Grid>
</DataTemplate>
</s:ConnectorContainer.ItemTemplate>
@@ -890,7 +890,7 @@
</Setter.Value>
</Setter>
</Style>
<Style x:Key="linkpointItemStyle"
TargetType="{x:Type ContentPresenter}">
<Setter Property="Canvas.Top"
@@ -917,7 +917,7 @@
<!-- PART_ConnectorDecorator -->
<Grid Margin="-5"
x:Name="PART_ConnectorDecorator">
<s:Connector DataContext="{Binding TopConnector}" Style="{StaticResource normalConnector}"
<s:Connector DataContext="{Binding TopConnector}" Style="{StaticResource DefaultConnectorStyle}"
Orientation="Right"
VerticalAlignment="Center"
HorizontalAlignment="Center"