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/Themes/Generic.xaml |  187 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 187 insertions(+), 0 deletions(-)

diff --git a/HMI.UI/Themes/Generic.xaml b/HMI.UI/Themes/Generic.xaml
new file mode 100644
index 0000000..9c06e9b
--- /dev/null
+++ b/HMI.UI/Themes/Generic.xaml
@@ -0,0 +1,187 @@
+锘�<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">
+    <RadialGradientBrush x:Key="RedLight" GradientOrigin="0.3,0.3" 
+                     RadiusX="0.7" 
+                     RadiusY="0.7">
+        <RadialGradientBrush.GradientStops>
+            <GradientStop Color="#fd583e" Offset="0"/>
+            <GradientStop Color="#d5341f" Offset="0.5"/>
+            <GradientStop Color="#aa0e00" Offset="1"/>
+        </RadialGradientBrush.GradientStops>
+    </RadialGradientBrush>
+
+    <RadialGradientBrush x:Key="GreenLight" GradientOrigin="0.3,0.3" 
+                         RadiusX="0.7" 
+                         RadiusY="0.7">
+        <RadialGradientBrush.GradientStops>
+            <GradientStop Color="#1b9e14" Offset="1"/>
+            <GradientStop Color="#21c418" Offset="0.5"/>
+            <GradientStop Color="#28ea1d" Offset="0"/>
+        </RadialGradientBrush.GradientStops>
+    </RadialGradientBrush>
+
+    <Style TargetType="{x:Type local:LightBall}">
+        <Setter Property="Template">
+            <Setter.Value>
+                <ControlTemplate TargetType="{x:Type local:LightBall}">
+                    <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
+                        <Ellipse Height="{TemplateBinding Size}" Width="{TemplateBinding Size}" VerticalAlignment="Center">
+                            <Ellipse.Style>
+                                <Style TargetType="Ellipse">
+                                    <Setter Property="Fill" Value="Gray"/>
+                                    <Style.Triggers>
+                                        <DataTrigger Binding="{Binding Value,RelativeSource={RelativeSource Mode=TemplatedParent}}" Value="True">
+                                            <Setter Property="Fill" Value="{StaticResource GreenLight}"/>
+                                        </DataTrigger>
+                                        <DataTrigger Binding="{Binding Value,RelativeSource={RelativeSource Mode=TemplatedParent}}" Value="False">
+                                            <Setter Property="Fill" Value="{StaticResource RedLight}"/>
+                                        </DataTrigger>
+                                    </Style.Triggers>
+                                </Style>
+                            </Ellipse.Style>
+                        </Ellipse>
+                        <ContentPresenter Margin="5,0,0,0" VerticalAlignment="Center"/>
+                    </StackPanel>
+                </ControlTemplate>
+            </Setter.Value>
+        </Setter>
+    </Style>
+
+    <Style TargetType="{x:Type local:EditBox}">
+        <Setter Property="HorizontalAlignment" Value="Stretch" />
+        <Setter Property="Template">
+            <Setter.Value>
+                <ControlTemplate TargetType="{x:Type local:EditBox}">
+                    <Grid Cursor="Hand" MinWidth="{TemplateBinding MinWidth}" Background="{TemplateBinding Background}">
+                        <Border x:Name="sb" VerticalAlignment="Center" Padding="0" Margin="0">
+                            <Border.Style>
+                                <Style TargetType="Border">
+                                    <Setter Property="BorderThickness" Value="0"/>
+                                    <Setter Property="BorderBrush" Value="Transparent"/>
+                                    <Style.Triggers>
+                                        <MultiDataTrigger>
+                                            <MultiDataTrigger.Conditions>
+                                                <Condition Binding="{Binding Path=Value, RelativeSource={RelativeSource TemplatedParent}}" Value=""/>
+                                                <Condition Binding="{Binding Path=ShowEmpty, RelativeSource={RelativeSource TemplatedParent}}" Value="True"/>
+                                            </MultiDataTrigger.Conditions>
+                                            <MultiDataTrigger.Setters>
+                                                <Setter Property="BorderBrush" Value="Black"/>
+                                                <Setter Property="BorderThickness" Value="0,0,0,0.6"/>
+                                            </MultiDataTrigger.Setters>
+                                        </MultiDataTrigger>
+                                        <MultiDataTrigger>
+                                            <MultiDataTrigger.Conditions>
+                                                <Condition Binding="{Binding Path=Value, RelativeSource={RelativeSource TemplatedParent}}" Value="{x:Null}"/>
+                                                <Condition Binding="{Binding Path=ShowEmpty, RelativeSource={RelativeSource TemplatedParent}}" Value="True"/>
+                                            </MultiDataTrigger.Conditions>
+                                            <MultiDataTrigger.Setters>
+                                                <Setter Property="BorderBrush" Value="Black"/>
+                                                <Setter Property="BorderThickness" Value="0,0,0,0.6"/>
+                                            </MultiDataTrigger.Setters>
+                                        </MultiDataTrigger>
+                                    </Style.Triggers>
+                                </Style>
+                            </Border.Style>
+                            <TextBlock x:Name="PART_TextBlockPart" 
+                                       FontSize="{TemplateBinding FontSize}"
+                                       TextWrapping="NoWrap" Padding="0" VerticalAlignment="Center"
+                               Text="{Binding Path=Value, RelativeSource={RelativeSource TemplatedParent}}"/>
+                        </Border>
+                        <TextBox x:Name="PART_TextBoxPart" BorderThickness="1" Padding="0" Background="#FFF"
+                                       FontSize="{TemplateBinding FontSize}" Visibility="Collapsed"
+                               Text="{Binding Path=Value, RelativeSource={RelativeSource TemplatedParent}}"/>
+                    </Grid>
+                </ControlTemplate>
+            </Setter.Value>
+        </Setter>
+    </Style>
+
+    <Style TargetType="{x:Type local:TableComboBox}">
+        <Setter Property="HorizontalAlignment" Value="Stretch" />
+        <Setter Property="Template">
+            <Setter.Value>
+                <ControlTemplate TargetType="{x:Type local:TableComboBox}">
+                    <Grid Cursor="Hand" MinWidth="{TemplateBinding MinWidth}" Background="{TemplateBinding Background}">
+                        <Border x:Name="sb" VerticalAlignment="Center" Padding="0" Margin="0">
+                            <Border.Style>
+                                <Style TargetType="Border">
+                                    <Setter Property="BorderThickness" Value="0"/>
+                                    <Setter Property="BorderBrush" Value="Transparent"/>
+                                    <Style.Triggers>
+                                        <MultiDataTrigger>
+                                            <MultiDataTrigger.Conditions>
+                                                <Condition Binding="{Binding Path=Value, RelativeSource={RelativeSource TemplatedParent}}" Value=""/>
+                                                <Condition Binding="{Binding Path=ShowEmpty, RelativeSource={RelativeSource TemplatedParent}}" Value="True"/>
+                                            </MultiDataTrigger.Conditions>
+                                            <MultiDataTrigger.Setters>
+                                                <Setter Property="BorderBrush" Value="Black"/>
+                                                <Setter Property="BorderThickness" Value="0,0,0,0.6"/>
+                                            </MultiDataTrigger.Setters>
+                                        </MultiDataTrigger>
+                                        <MultiDataTrigger>
+                                            <MultiDataTrigger.Conditions>
+                                                <Condition Binding="{Binding Path=Value, RelativeSource={RelativeSource TemplatedParent}}" Value="{x:Null}"/>
+                                                <Condition Binding="{Binding Path=ShowEmpty, RelativeSource={RelativeSource TemplatedParent}}" Value="True"/>
+                                            </MultiDataTrigger.Conditions>
+                                            <MultiDataTrigger.Setters>
+                                                <Setter Property="BorderBrush" Value="Black"/>
+                                                <Setter Property="BorderThickness" Value="0,0,0,0.6"/>
+                                            </MultiDataTrigger.Setters>
+                                        </MultiDataTrigger>
+                                    </Style.Triggers>
+                                </Style>
+                            </Border.Style>
+                            <TextBlock x:Name="PART_TextBlockPart" 
+                                   FontSize="{TemplateBinding FontSize}"
+                                   TextWrapping="NoWrap" Padding="0" VerticalAlignment="Center"
+                           Text="{Binding Path=Value, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"/>
+                        </Border>
+                        <ComboBox x:Name="PART_ComboBoxPart" BorderThickness="0" Padding="0" 
+                                   FontSize="{TemplateBinding FontSize}" Visibility="Collapsed"
+                           Text="{Binding Path=Value, RelativeSource={RelativeSource TemplatedParent}}"/>
+                    </Grid>
+                </ControlTemplate>
+            </Setter.Value>
+        </Setter>
+    </Style>
+
+    <Style TargetType="{x:Type local:ScrollLabel}">
+        <Setter Property="Template">
+            <Setter.Value>
+                <ControlTemplate TargetType="{x:Type local:ScrollLabel}">
+                    <ScrollViewer Name="slv" IsHitTestVisible="False" Width="{TemplateBinding Width}" 
+                                  VerticalScrollBarVisibility="Hidden" 
+                                  BorderThickness="0"
+                                  HorizontalScrollBarVisibility="Hidden">
+                        <Label x:Name="label" Content="{Binding Path=Value, RelativeSource={RelativeSource TemplatedParent}}" 
+                               VerticalContentAlignment="Center" 
+                               BorderThickness="0"
+                               Foreground="{TemplateBinding Foreground}"
+                               Padding="{TemplateBinding Padding}"
+                               Margin="{TemplateBinding Margin}"
+                               HorizontalContentAlignment="Left" FontSize="{TemplateBinding FontSize}">
+                            <!--<Label.Triggers>
+                                <EventTrigger RoutedEvent="Label.Loaded">
+                                    <BeginStoryboard HandoffBehavior="Compose">
+                                        <Storyboard>
+                                            <DoubleAnimation From="0" 
+                     To="{Binding ElementName=slv,Path=ScrollableWidth}"
+                     Duration="0:0:3"
+                     Storyboard.TargetName="slv"
+                     AutoReverse="True"
+                     RepeatBehavior="Forever"
+                     BeginTime="0:0:0.2"
+                     Storyboard.TargetProperty="(local:ScrollViewerBehavior.HorizontalOffset)">
+                                            </DoubleAnimation>
+                                        </Storyboard>
+                                    </BeginStoryboard>
+                                </EventTrigger>
+                            </Label.Triggers>-->
+                        </Label>
+                    </ScrollViewer>
+                </ControlTemplate>
+            </Setter.Value>
+        </Setter>
+    </Style>
+</ResourceDictionary>
\ No newline at end of file

--
Gitblit v1.9.1