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

89 lines
4.9 KiB
Plaintext
Raw Normal View History

2023-01-23 22:05:51 +08:00
<UserControl x:Class="AIStudio.Wpf.DiagramDesigner.LineControl"
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"
xmlns:s="clr-namespace:AIStudio.Wpf.DiagramDesigner"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl.Resources>
<s:ColorBrushConverter x:Key="ColorBrushConverter" />
<s:LineDashConverter x:Key="LineDashConverter"/>
2023-01-25 14:42:01 +08:00
<s:ArrowPathConverter x:Key="ArrowPathConverter"/>
<s:ArrowSizeConverter x:Key="ArrowSizeConverter"/>
<s:MathConverter x:Key="MathAddConverter" Operation="Add" />
<Style x:Key="LineStyle" TargetType="Path">
<Setter Property="Stroke" Value="{Binding ColorViewModel.LineColor,Converter={StaticResource ColorBrushConverter}}"/>
<Style.Triggers>
<DataTrigger Value="True" Binding="{Binding IsSelected}">
<Setter Property="Stroke" Value="Black"/>
</DataTrigger>
</Style.Triggers>
</Style>
<Style x:Key="ArrowStyle" TargetType="Path">
2023-01-26 18:42:58 +08:00
<!--<Setter Property="Stroke" Value="{Binding ColorViewModel.LineColor,Converter={StaticResource ColorBrushConverter}}"/>-->
2023-01-25 14:42:01 +08:00
<Setter Property="Fill" Value="{Binding ColorViewModel.LineColor,Converter={StaticResource ColorBrushConverter}}"/>
<Style.Triggers>
<DataTrigger Value="True" Binding="{Binding IsSelected}">
2023-01-26 18:42:58 +08:00
<!--<Setter Property="Stroke" Value="Black"/>-->
2023-01-25 14:42:01 +08:00
<Setter Property="Fill" Value="Black"/>
</DataTrigger>
</Style.Triggers>
</Style>
2023-01-23 22:05:51 +08:00
</UserControl.Resources>
<Grid>
<Canvas x:Name="rootCanvas">
2023-01-25 14:42:01 +08:00
<Path x:Name="line" StrokeThickness="{Binding ColorViewModel.LineWidth}"
StrokeDashArray="{Binding ColorViewModel.LineDashStyle,Converter={StaticResource LineDashConverter}}"
Style="{StaticResource LineStyle}">
2023-01-23 22:05:51 +08:00
<Path.Data>
<MultiBinding Converter="{x:Static s:ConnectionPathConverter.Instance}">
<Binding Path="PathGeneratorResult"/>
</MultiBinding>
</Path.Data>
</Path>
2023-01-25 14:42:01 +08:00
<Path x:Name="rightarrow"
2023-01-26 20:05:21 +08:00
Data="{Binding ShapeViewModel.SinkMarker.Path}"
2023-01-26 18:42:58 +08:00
Width="{Binding ShapeViewModel.SinkMarker.Width}"
Stretch="UniformToFill"
2023-01-25 14:42:01 +08:00
HorizontalAlignment="Left"
VerticalAlignment="Top"
RenderTransformOrigin="0.5,0.5"
2023-01-27 14:54:03 +08:00
Visibility="{Binding Path=IsFullConnection, Converter={x:Static s:BoolToVisibilityConverter.Instance}}"
2023-01-25 14:42:01 +08:00
Style="{StaticResource ArrowStyle}">
<Path.RenderTransform>
<TransformGroup>
<RotateTransform x:Name="rightrot" Angle="{Binding EndAngle}"/>
<TranslateTransform X="{Binding EndPoint.X}" Y="{Binding EndPoint.Y}"/>
</TransformGroup>
</Path.RenderTransform>
</Path>
<Path x:Name="leftarrow"
2023-01-26 20:05:21 +08:00
Data="{Binding ShapeViewModel.SourceMarker.Path}"
Width="{Binding ShapeViewModel.SourceMarker.Width}"
2023-01-25 14:42:01 +08:00
Canvas.Left="{Binding StartPoint.X}"
Canvas.Top="{Binding StartPoint.Y}"
2023-01-26 18:42:58 +08:00
Stretch="UniformToFill"
2023-01-25 14:42:01 +08:00
HorizontalAlignment="Left"
VerticalAlignment="Top"
RenderTransformOrigin="0.5,0.5"
2023-01-27 14:54:03 +08:00
Visibility="{Binding Path=IsFullConnection, Converter={x:Static s:BoolToVisibilityConverter.Instance}}"
2023-01-25 14:42:01 +08:00
Style="{StaticResource ArrowStyle}">
<Path.RenderTransform>
<TransformGroup>
<RotateTransform x:Name="leftrot" Angle="{Binding StartAngle}"/>
<TranslateTransform X="{Binding StartPoint.X}" Y="{Binding StartPoint.Y}"/>
</TransformGroup>
</Path.RenderTransform>
</Path>
2023-01-23 22:05:51 +08:00
2023-01-25 14:42:01 +08:00
<Ellipse x:Name="ball" Fill="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}"
Width="{Binding ColorViewModel.LineWidth,Converter={StaticResource MathAddConverter},ConverterParameter=4}"
Height="{Binding ColorViewModel.LineWidth,Converter={StaticResource MathAddConverter},ConverterParameter=4}"
Panel.ZIndex="1" />
2023-01-23 22:05:51 +08:00
</Canvas>
</Grid>
</UserControl>