From 9d1660270272180cd71147d6ddd53d1382643d2e Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 02 十一月 2026 18:00:14 +0800
Subject: [PATCH] merge: 并入远程 Initial commit 作为历史根节点
---
HMI.UI/Controls/treegrid/Themes/TreeItemContentControl.xaml | 178 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 178 insertions(+), 0 deletions(-)
diff --git a/HMI.UI/Controls/treegrid/Themes/TreeItemContentControl.xaml b/HMI.UI/Controls/treegrid/Themes/TreeItemContentControl.xaml
new file mode 100644
index 0000000..a597e4c
--- /dev/null
+++ b/HMI.UI/Controls/treegrid/Themes/TreeItemContentControl.xaml
@@ -0,0 +1,178 @@
+锘�<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="clr-namespace:HMI.UI">
+
+ <Style x:Key="ClearToggleStyle" TargetType="{x:Type ToggleButton}">
+ <Setter Property="Focusable" Value="False"/>
+ <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
+ <Setter Property="VerticalContentAlignment" Value="Stretch"/>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="{x:Type ToggleButton}">
+ <Border Background="Transparent" BorderThickness="0">
+ <ContentControl Content="{TemplateBinding Content}"
+ ContentTemplate="{TemplateBinding ContentTemplate}"
+ HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
+ VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
+ SnapsToDevicePixels="True"/>
+ </Border>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+
+ <Style x:Key="ClearListItemStyle" TargetType="{x:Type ListBoxItem}">
+ <Setter Property="Focusable" Value="False"/>
+ <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
+ <Setter Property="VerticalContentAlignment" Value="Stretch"/>
+ <Setter Property="Padding" Value="0"/>
+ <Setter Property="Margin" Value="0"/>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="{x:Type ListBoxItem}">
+ <Border Background="Transparent" BorderThickness="0">
+ <ContentControl Content="{TemplateBinding Content}"
+ ContentTemplate="{TemplateBinding ContentTemplate}"
+ HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
+ VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
+ SnapsToDevicePixels="True"/>
+ </Border>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+
+ <DataTemplate x:Key="Icon_Template">
+ <Grid x:Name="root" MinHeight="16">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <Grid x:Name="r1" Margin="0,0,0,1" HorizontalAlignment="Left">
+ <Line X2="7.5" Y2="0" X1="7.5" Y1="{Binding ElementName=r1,Path=ActualHeight}" StrokeThickness="1" Stroke="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:TreeItemContentControl},Path=IconLineStroke}" StrokeDashArray="1,1"/>
+ </Grid>
+ <Grid x:Name="cross" Grid.Row="1" Height="16" Width="25" >
+ <Path Data="M 0.5,0.5 l 15,0 l 0,15 l -15,0 L 0.5,0" Stroke="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:TreeItemContentControl},Path=IconLineStroke}" StrokeThickness="1"/>
+ <Path x:Name="cross_h" Data="M 3,7.5 l 9,0" Stroke="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:TreeItemContentControl},Path=IconLineStroke}" StrokeThickness="1"/>
+ <Path x:Name="cross_v" Data="M 7.5,3 l 0,9" Stroke="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:TreeItemContentControl},Path=IconLineStroke}" StrokeThickness="1"/>
+ </Grid>
+ <Grid Grid.RowSpan="3" VerticalAlignment="Center" Height="1">
+ <Path x:Name="hline" Data="M 17,0 l 5,0" Stroke="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:TreeItemContentControl},Path=IconLineStroke}" StrokeThickness="1" StrokeDashArray="1,1"/>
+ </Grid>
+ <Grid x:Name="r2" Grid.Row="2" Margin="0,1,0,0" HorizontalAlignment="Left">
+ <Line X1="7.5" Y1="0" X2="7.5" Y2="{Binding ElementName=r2,Path=ActualHeight}" StrokeThickness="1" Stroke="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:TreeItemContentControl},Path=IconLineStroke}" StrokeDashArray="1,1"/>
+ </Grid>
+ <Grid x:Name="r" Grid.RowSpan="3" Margin="0,1,0,1" HorizontalAlignment="Left" Visibility="Collapsed">
+ <Line X1="7.5" Y1="0" X2="7.5" Y2="{Binding ElementName=r,Path=ActualHeight}" StrokeThickness="1" Stroke="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:TreeItemContentControl},Path=IconLineStroke}" StrokeDashArray="1,1"/>
+ </Grid>
+ </Grid>
+ <DataTemplate.Triggers>
+ <DataTrigger Binding="{Binding }" Value="1">
+ <Setter TargetName="r1" Property="Visibility" Value="Collapsed"/>
+ <Setter TargetName="r2" Property="Visibility" Value="Collapsed"/>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding }" Value="2">
+ <Setter TargetName="r1" Property="Visibility" Value="Collapsed"/>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding }" Value="3">
+ <Setter TargetName="r2" Property="Visibility" Value="Collapsed"/>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding }" Value="4">
+ <Setter TargetName="r1" Property="Visibility" Value="Collapsed"/>
+ <Setter TargetName="r2" Property="Visibility" Value="Collapsed"/>
+ <Setter TargetName="cross_v" Property="Visibility" Value="Collapsed"/>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding }" Value="5">
+ <Setter TargetName="r1" Property="Visibility" Value="Collapsed"/>
+ <Setter TargetName="cross_v" Property="Visibility" Value="Collapsed"/>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding }" Value="6">
+ <Setter TargetName="r2" Property="Visibility" Value="Collapsed"/>
+ <Setter TargetName="cross_v" Property="Visibility" Value="Collapsed"/>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding }" Value="7">
+ <Setter TargetName="cross_v" Property="Visibility" Value="Collapsed"/>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding }" Value="8">
+ <Setter TargetName="r1" Property="Visibility" Value="Collapsed"/>
+ <Setter TargetName="r2" Property="Visibility" Value="Collapsed"/>
+ <Setter TargetName="r" Property="Visibility" Value="Visible"/>
+ <Setter TargetName="cross" Property="Visibility" Value="Collapsed"/>
+ <Setter TargetName="hline" Property="Data" Value="M 9,0 l 14,0"/>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding }" Value="9">
+ <Setter TargetName="r2" Property="Visibility" Value="Collapsed"/>
+ <Setter TargetName="cross" Property="Visibility" Value="Collapsed"/>
+ <Setter TargetName="hline" Property="Data" Value="M 9,0 l 14,0"/>
+ </DataTrigger>
+ </DataTemplate.Triggers>
+ </DataTemplate>
+
+ <Style TargetType="{x:Type local:TreeItemContentControl}">
+ <Setter Property="MinHeight" Value="19"/>
+ <Setter Property="VerticalContentAlignment" Value="Center"/>
+ <Setter Property="BorderThickness" Value="0"/>
+ <Setter Property="BorderBrush" Value="LightGray"/>
+ <Setter Property="Foreground" Value="{Binding Foreground,RelativeSource={RelativeSource Mode=FindAncestor,
+AncestorType=DataGridCell,AncestorLevel=1}}"/>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="{x:Type local:TreeItemContentControl}">
+ <Border x:Name="CellBorder"
+ Margin="0"
+ Background="{TemplateBinding Background}"
+ BorderBrush="{TemplateBinding BorderBrush}"
+ BorderThickness="{TemplateBinding BorderThickness}">
+ <Grid>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="*"/>
+ </Grid.ColumnDefinitions>
+ <Grid>
+ <ListBox ItemsSource="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},Path=TreeData.ParentItems}"
+ ItemContainerStyle="{StaticResource ClearListItemStyle}"
+ ScrollViewer.HorizontalScrollBarVisibility="Disabled"
+ ScrollViewer.VerticalScrollBarVisibility="Disabled"
+ BorderThickness="0" Margin="0" Padding="0" Background="Transparent">
+ <ListBox.ItemsPanel>
+ <ItemsPanelTemplate>
+ <StackPanel Orientation="Horizontal" Margin="0"/>
+ </ItemsPanelTemplate>
+ </ListBox.ItemsPanel>
+ <ListBox.ItemTemplate>
+ <DataTemplate>
+ <Grid x:Name="lineGrid" Width="15" Margin="0">
+ <Line x:Name="line" X1="7.5" Y1="0" X2="7.5" Y2="{Binding ElementName=lineGrid,Path=ActualHeight}" StrokeThickness="1"
+ Stroke="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:TreeItemContentControl},Path=IconLineStroke}" StrokeDashArray="1,1"/>
+ </Grid>
+ </DataTemplate>
+ </ListBox.ItemTemplate>
+ </ListBox>
+ </Grid>
+
+ <ToggleButton x:Name="ExpanderButton"
+ Cursor="Hand"
+ Grid.Column="1" Style="{StaticResource ClearToggleStyle}" HorizontalAlignment="Left"
+
+ IsChecked="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},Path=TreeData.IsExpanded,Mode=TwoWay}"
+ Content="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},Path=TreeData.IconType}"
+ ContentTemplate="{StaticResource Icon_Template}"
+ Margin="0" Padding="0"/>
+
+ <ContentControl Grid.Column="2"
+ Content="{TemplateBinding Content}"
+ ContentTemplate="{TemplateBinding ContentTemplate}"
+ VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
+ HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
+ </Grid>
+ </Border>
+ <ControlTemplate.Triggers>
+ </ControlTemplate.Triggers>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+
+</ResourceDictionary>
\ No newline at end of file
--
Gitblit v1.9.1