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