mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-03 00:00:57 +08:00
272 lines
16 KiB
XML
272 lines
16 KiB
XML
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:dd="clr-namespace:AIStudio.Wpf.DiagramDesigner"
|
|
xmlns:c="clr-namespace:AIStudio.Wpf.DiagramDesigner.Controls">
|
|
<dd:ColorBrushConverter x:Key="ColorBrushConverter" />
|
|
<dd:ConectorOrientationConverter x:Key="ConectorOrientationConverter" />
|
|
<dd:ConectorValueConverter x:Key="ConectorValueConverter"/>
|
|
|
|
<DataTemplate DataType="{x:Type dd:FullyCreatedConnectorInfo}">
|
|
<Grid Width="{Binding ConnectorWidth}" Height="{Binding ConnectorHeight}" Cursor="Cross">
|
|
<Grid.ContextMenu>
|
|
<ContextMenu ItemsSource="{Binding MenuOptions}" >
|
|
<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>
|
|
<!-- transparent extra space makes connector easier to hit -->
|
|
<Ellipse x:Name="outer" Fill="Transparent" Opacity="0.3" Margin="-3" />
|
|
<Ellipse x:Name="innter" Fill="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}" StrokeThickness="1" Stroke="{Binding ColorViewModel.LineColor,Converter={StaticResource ColorBrushConverter}}" />
|
|
</Grid>
|
|
<DataTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="outer" Property="Margin" Value="-6" />
|
|
<Setter TargetName="outer" Property="Fill" Value="#f73438" />
|
|
<Setter TargetName="innter" Property="Fill" Value="#f73438" />
|
|
<Setter TargetName="innter" Property="Stroke" Value="#f73438" />
|
|
</Trigger>
|
|
<DataTrigger Binding="{Binding BeAttachTo}" Value="True">
|
|
<Setter TargetName="outer" Property="Margin" Value="-6" />
|
|
<Setter TargetName="outer" Property="Fill" Value="#f73438" />
|
|
<Setter TargetName="innter" Property="Fill" Value="#f73438" />
|
|
<Setter TargetName="innter" Property="Stroke" Value="#f73438" />
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding DisableAttachTo}" Value="True">
|
|
<Setter TargetName="outer" Property="Margin" Value="-6" />
|
|
<Setter TargetName="outer" Property="Fill" Value="Gray" />
|
|
<Setter TargetName="innter" Property="Fill" Value="Gray" />
|
|
<Setter TargetName="innter" Property="Stroke" Value="Gray" />
|
|
</DataTrigger>
|
|
</DataTemplate.Triggers>
|
|
</DataTemplate>
|
|
|
|
<DataTemplate DataType="{x:Type dd:LogicalConnectorInfo}">
|
|
<Grid >
|
|
<Grid ToolTip="{Binding Name}" Width="{Binding ConnectorWidth}" Height="{Binding ConnectorHeight}" HorizontalAlignment="Left" VerticalAlignment="Top" Cursor="Cross">
|
|
<Grid.ContextMenu>
|
|
<ContextMenu ItemsSource="{Binding MenuOptions}">
|
|
<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>
|
|
<!-- transparent extra space makes connector easier to hit -->
|
|
<Ellipse x:Name="outer" Fill="Transparent" Opacity="0.3" Margin="-3" />
|
|
<Ellipse x:Name="innter" Fill="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}" StrokeThickness="1" Stroke="{Binding ColorViewModel.LineColor,Converter={StaticResource ColorBrushConverter}}" />
|
|
</Grid>
|
|
|
|
<Control x:Name="value">
|
|
<Control.Template>
|
|
<ControlTemplate>
|
|
<TextBlock x:Name="txtleft" FontSize="10" RenderTransformOrigin="0.5,0.5" TextTrimming="CharacterEllipsis">
|
|
<TextBlock.Text>
|
|
<MultiBinding Converter="{StaticResource ConectorValueConverter}">
|
|
<Binding Path="." />
|
|
<Binding Path="ConnectorChanged" />
|
|
</MultiBinding>
|
|
</TextBlock.Text>
|
|
<TextBlock.ToolTip>
|
|
<MultiBinding Converter="{StaticResource ConectorValueConverter}" ConverterParameter="ToolTip">
|
|
<Binding Path="." />
|
|
<Binding Path="ConnectorChanged" />
|
|
</MultiBinding>
|
|
</TextBlock.ToolTip>
|
|
<TextBlock.RenderTransform>
|
|
<TransformGroup>
|
|
<ScaleTransform/>
|
|
<SkewTransform/>
|
|
<RotateTransform/>
|
|
<TranslateTransform Y="10" X="{Binding ElementName=txtleft,Path=Text,Converter={StaticResource ConectorOrientationConverter}}"/>
|
|
</TransformGroup>
|
|
</TextBlock.RenderTransform>
|
|
</TextBlock>
|
|
</ControlTemplate>
|
|
</Control.Template>
|
|
</Control>
|
|
|
|
<Control x:Name="label">
|
|
<Control.Template>
|
|
<ControlTemplate>
|
|
<TextBlock x:Name="txtRight" FontSize="10" Text="{Binding Name}" RenderTransformOrigin="0.5,0.5" TextTrimming="CharacterEllipsis">
|
|
<TextBlock.RenderTransform>
|
|
<TransformGroup>
|
|
<ScaleTransform/>
|
|
<SkewTransform/>
|
|
<RotateTransform/>
|
|
<TranslateTransform Y="-2" X="10"/>
|
|
</TransformGroup>
|
|
</TextBlock.RenderTransform>
|
|
</TextBlock>
|
|
</ControlTemplate>
|
|
</Control.Template>
|
|
</Control>
|
|
|
|
</Grid>
|
|
<DataTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="outer" Property="Margin" Value="-6" />
|
|
<Setter TargetName="outer" Property="Fill" Value="#f73438" />
|
|
<Setter TargetName="innter" Property="Fill" Value="#f73438" />
|
|
<Setter TargetName="innter" Property="Stroke" Value="#f73438" />
|
|
</Trigger>
|
|
<DataTrigger Binding="{Binding BeAttachTo}" Value="True">
|
|
<Setter TargetName="outer" Property="Margin" Value="-6" />
|
|
<Setter TargetName="outer" Property="Fill" Value="#f73438" />
|
|
<Setter TargetName="innter" Property="Fill" Value="#f73438" />
|
|
<Setter TargetName="innter" Property="Stroke" Value="#f73438" />
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding DisableAttachTo}" Value="True">
|
|
<Setter TargetName="outer" Property="Margin" Value="-6" />
|
|
<Setter TargetName="outer" Property="Fill" Value="Gray" />
|
|
<Setter TargetName="innter" Property="Fill" Value="Gray" />
|
|
<Setter TargetName="innter" Property="Stroke" Value="Gray" />
|
|
</DataTrigger>
|
|
<DataTrigger Value="Right" Binding="{Binding Orientation}">
|
|
<Setter TargetName="value" Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate>
|
|
<TextBlock x:Name="txtRight" FontSize="10" RenderTransformOrigin="0.5,0.5" TextTrimming="CharacterEllipsis">
|
|
<TextBlock.Text>
|
|
<MultiBinding Converter="{StaticResource ConectorValueConverter}">
|
|
<Binding Path="." />
|
|
<Binding Path="ConnectorChanged" />
|
|
</MultiBinding>
|
|
</TextBlock.Text>
|
|
<TextBlock.ToolTip>
|
|
<MultiBinding Converter="{StaticResource ConectorValueConverter}" ConverterParameter="ToolTip">
|
|
<Binding Path="." />
|
|
<Binding Path="ConnectorChanged" />
|
|
</MultiBinding>
|
|
</TextBlock.ToolTip>
|
|
<TextBlock.RenderTransform>
|
|
<TransformGroup>
|
|
<ScaleTransform/>
|
|
<SkewTransform/>
|
|
<RotateTransform/>
|
|
<TranslateTransform Y="10" X="5"/>
|
|
</TransformGroup>
|
|
</TextBlock.RenderTransform>
|
|
</TextBlock>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Setter TargetName="label" Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate>
|
|
<TextBlock x:Name="txtleft" FontSize="10" Text="{Binding Name}" RenderTransformOrigin="0.5,0.5" TextTrimming="CharacterEllipsis">
|
|
<TextBlock.RenderTransform>
|
|
<TransformGroup>
|
|
<ScaleTransform/>
|
|
<SkewTransform/>
|
|
<RotateTransform/>
|
|
<TranslateTransform Y="-2" X="{Binding ElementName=txtleft,Path=Text,Converter={dd:ConectorOrientationConverter Parameter='10'}}"/>
|
|
</TransformGroup>
|
|
</TextBlock.RenderTransform>
|
|
</TextBlock>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</DataTrigger>
|
|
</DataTemplate.Triggers>
|
|
</DataTemplate>
|
|
|
|
<DataTemplate DataType="{x:Type dd:BlockConnectorInfo}">
|
|
<Grid Width="{Binding ConnectorWidth}" Height="{Binding ConnectorHeight}" >
|
|
<Rectangle x:Name="innter" Fill="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}" StrokeThickness="1" Stroke="{Binding ColorViewModel.LineColor,Converter={StaticResource ColorBrushConverter}}" />
|
|
</Grid>
|
|
<DataTemplate.Triggers>
|
|
<DataTrigger Binding="{Binding BeAttachTo}" Value="True">
|
|
<Setter TargetName="innter" Property="Fill" Value="#4d97ff" />
|
|
<Setter TargetName="innter" Property="Stroke" Value="#4d97ff" />
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding DisableAttachTo}" Value="True">
|
|
<Setter TargetName="innter" Property="Fill" Value="Gray" />
|
|
<Setter TargetName="innter" Property="Stroke" Value="Gray" />
|
|
</DataTrigger>
|
|
</DataTemplate.Triggers>
|
|
</DataTemplate>
|
|
|
|
<DataTemplate DataType="{x:Type dd:BlockItemsContainerInfo}">
|
|
<Grid dd:WidthAndHeightProps.Active="True"
|
|
dd:WidthAndHeightProps.BoundActualWidth="{Binding ActualItemWidth,Mode=OneWayToSource}"
|
|
dd:WidthAndHeightProps.BoundActualHeight="{Binding ActualItemHeight,Mode=OneWayToSource}">
|
|
<Rectangle x:Name="innter"
|
|
Fill="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}"
|
|
StrokeThickness="0"
|
|
Stroke="{Binding ColorViewModel.LineColor,Converter={StaticResource ColorBrushConverter}}" />
|
|
</Grid>
|
|
<DataTemplate.Triggers>
|
|
<DataTrigger Binding="{Binding BeAttachTo}" Value="True">
|
|
<Setter TargetName="innter" Property="Margin" Value="-1" />
|
|
<Setter TargetName="innter" Property="StrokeThickness" Value="1" />
|
|
<Setter TargetName="innter" Property="Stroke" Value="#4d97ff" />
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding DisableAttachTo}" Value="True">
|
|
<Setter TargetName="innter" Property="Margin" Value="-1" />
|
|
<Setter TargetName="innter" Property="StrokeThickness" Value="1" />
|
|
<Setter TargetName="innter" Property="Stroke" Value="Gray" />
|
|
</DataTrigger>
|
|
</DataTemplate.Triggers>
|
|
</DataTemplate>
|
|
|
|
<!-- DragThumb Default Template -->
|
|
<Style TargetType="{x:Type dd:BlockItemsContainer}">
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type dd:BlockItemsContainer}">
|
|
<Border Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
Padding="{TemplateBinding Padding}">
|
|
<Grid>
|
|
<ContentPresenter
|
|
ContentSource="Border"
|
|
ContentTemplate="{TemplateBinding BorderTemplate}"
|
|
ContentTemplateSelector="{TemplateBinding BorderTemplateSelector}"
|
|
ContentStringFormat="{TemplateBinding BorderStringFormat}"/>
|
|
|
|
<ContentPresenter
|
|
x:Name="ContentPresenter"
|
|
Content="{TemplateBinding ContentControl.Content}"
|
|
ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}"
|
|
ContentTemplateSelector="{TemplateBinding ContentControl.ContentTemplateSelector}"
|
|
ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}">
|
|
</ContentPresenter>
|
|
</Grid>
|
|
</Border>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- DragThumb Default Template -->
|
|
<Style TargetType="{x:Type c:DragThumb}">
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type c:DragThumb}">
|
|
<Rectangle Fill="Transparent" />
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
|
|
|
|
</ResourceDictionary> |