Files
2025-01-19 11:02:03 +08:00

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>