From b544d5cccd76735e034c8055918a50927b437474 Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期二, 10 十一月 2026 08:29:04 +0800
Subject: [PATCH] fix: 维护模式重复进入失败与按钮灰死 + Broker 并发验证用例

---
 HMI.ParameterManage/ParameterManage.xaml |  137 +++++++++++++++++++++++++++++++++------------
 1 files changed, 100 insertions(+), 37 deletions(-)

diff --git a/HMI.ParameterManage/ParameterManage.xaml b/HMI.ParameterManage/ParameterManage.xaml
index ac5b69b..bdf5ca9 100644
--- a/HMI.ParameterManage/ParameterManage.xaml
+++ b/HMI.ParameterManage/ParameterManage.xaml
@@ -13,8 +13,15 @@
              mc:Ignorable="d" 
              Padding="10"
              Loaded="UserControl_Loaded"
-             Background="{StaticResource WorkspaceBackground}"
+             Background="{DynamicResource WorkspaceBackground}"
              d:DesignHeight="450" d:DesignWidth="800">
+    <UserControl.Resources>
+        <CollectionViewSource x:Key="GroupFilter" Source="{Binding Parameters}">
+            <CollectionViewSource.GroupDescriptions>
+                <PropertyGroupDescription PropertyName="ShowGroup" />
+            </CollectionViewSource.GroupDescriptions>
+        </CollectionViewSource>
+    </UserControl.Resources>
     <Grid>
         <Grid.ColumnDefinitions>
             <ColumnDefinition Width="3*"/>
@@ -28,16 +35,12 @@
                 </Grid.RowDefinitions>
                 <DockPanel>
                     <StackPanel DockPanel.Dock="Right" Style="{StaticResource ButtonGroup}">
-                        <Button Style="{StaticResource PrimaryButton}"
-        pu:ButtonHelper.Icon="&#xe61a;" x:Name="addBtn" Click="Button_Click">鏂板</Button>
-                        <Button Style="{StaticResource PrimaryButton}" 
-pu:ButtonHelper.Icon="&#xe631;" x:Name="refreshBtn" Click="Button_Click">鍒锋柊</Button>
-                        <Button x:Name="delBatchBtn" 
-                            pu:ButtonHelper.Icon="&#xe60f;" Style="{StaticResource DangerButton}"
-                                Click="Button_Click">鍒犻櫎</Button>
+                        <Button Style="{StaticResource AddBtn}" x:Name="addBtn" Click="Button_Click"/>
+                        <Button Style="{StaticResource RfhBtn}" x:Name="refreshBtn" Click="Button_Click"/>
+                        <Button Style="{StaticResource DelBtn}" x:Name="delBatchBtn" Click="Button_Click"/>
                     </StackPanel>
                     <TextBlock DockPanel.Dock="Left" FontSize="{StaticResource TitleFontSize}" 
-VerticalAlignment="Center" HorizontalAlignment="Left" Text="浜у搧鍒楄〃"/>
+VerticalAlignment="Center" HorizontalAlignment="Left" Text="{DynamicResource Pm.Product.Title}"/>
                 </DockPanel>
 
 
@@ -60,16 +63,24 @@
                                 </DataTemplate>
                             </DataGridTemplateColumn.CellTemplate>
                         </DataGridTemplateColumn>
-                        <DataGridTextColumn Width="*" Binding="{Binding Name}" Header="浜у搧鍚嶇О" />
-                        <DataGridTemplateColumn Header="鎿嶄綔" Width="100" IsReadOnly="True" CanUserResize="False">
+                        <DataGridTextColumn Width="*" Binding="{Binding Name}">
+                            <DataGridTextColumn.Header>
+                                <TextBlock Text="{DynamicResource Pm.Product.Name}"/>
+                            </DataGridTextColumn.Header>
+                        </DataGridTextColumn>
+                        <DataGridTemplateColumn Width="100" IsReadOnly="True" CanUserResize="False">
+                            <DataGridTemplateColumn.Header>
+                                <TextBlock Text="{DynamicResource App.Opt}"/>
+                            </DataGridTemplateColumn.Header>
+
                             <DataGridTemplateColumn.CellTemplate>
                                 <DataTemplate>
                                     <StackPanel Orientation="Horizontal" dp:StackPanelHelper.ChildSpace="10">
-                                        <Button x:Name="editProductBtn" Style="{StaticResource RowLink}"  DataContext="{Binding }"
-                    Click="Button_Click">缂栬緫</Button>
-                                        <Button x:Name="delProductBtn" Style="{StaticResource DangerLinkButton}"
+                                        <Button x:Name="editProductBtn" Style="{StaticResource EditLink}"  DataContext="{Binding }"
+                    Click="Button_Click"/>
+                                        <Button x:Name="delProductBtn" Style="{StaticResource DeleteLink}"
                     DataContext="{Binding }"
-                    Click="Button_Click">鍒犻櫎</Button>
+                    Click="Button_Click"/>
                                     </StackPanel>
                                 </DataTemplate>
                             </DataGridTemplateColumn.CellTemplate>
@@ -87,23 +98,47 @@
                 </Grid.RowDefinitions>
                 <DockPanel>
                     <StackPanel DockPanel.Dock="Right" Style="{StaticResource ButtonGroup}">
-                        <Button Style="{StaticResource PrimaryButton}"
-pu:ButtonHelper.Icon="&#xe61a;" x:Name="addParameterBtn" Click="Button_Click">鏂板</Button>
-                        <Button Style="{StaticResource PrimaryButton}" 
-pu:ButtonHelper.Icon="&#xe631;" x:Name="refreshParameterBtn" Click="Button_Click">鍒锋柊</Button>
-                        <Button pu:ButtonHelper.Icon="&#xe60f;" x:Name="deleteBatchParameterBtn" 
-                                Style="{StaticResource DangerButton}" Click="Button_Click">鍒犻櫎</Button>
+                        <Button Style="{StaticResource AddBtn}" x:Name="addParameterBtn" Click="Button_Click"/>
+                        <Button Style="{StaticResource RfhBtn}" x:Name="refreshParameterBtn" Click="Button_Click"/>
+                        <Button Style="{StaticResource DelBtn}" x:Name="deleteBatchParameterBtn" Click="Button_Click"/>
                     </StackPanel>
                     <TextBlock DockPanel.Dock="Left" FontSize="{StaticResource TitleFontSize}" 
-VerticalAlignment="Center" HorizontalAlignment="Left" Text="浜у搧鍙傛暟"/>
+VerticalAlignment="Center" HorizontalAlignment="Left" Text="{DynamicResource Pm.Parameter.Title}"/>
                 </DockPanel>
 
 
-                <DataGrid Grid.Row="1" x:Name="parameterTable" Style="{StaticResource DefaultDataGrid}" SelectionMode="Single" 
-                          SelectedItem="{Binding SelectedParameter}"
-                ItemsSource="{Binding Parameters}">
+                <DataGrid Grid.Row="1" x:Name="parameterTable" Style="{StaticResource DefaultDataGrid}" 
+                          SelectionMode="Single" 
+                          ItemsSource="{Binding Source={StaticResource GroupFilter}}"
+                          SelectedItem="{Binding SelectedParameter}">
+                    <DataGrid.GroupStyle>
+                        <GroupStyle>
+                            <GroupStyle.ContainerStyle>
+                                <Style TargetType="{x:Type GroupItem}">
+                                    <Setter Property="Template">
+                                        <Setter.Value>
+                                            <ControlTemplate TargetType="{x:Type GroupItem}">
+                                                <Expander BorderThickness="0" Background="DarkCyan"
+                                      IsExpanded="True">
+                                                    <Expander.Header>
+                                                        <TextBlock Text="{Binding Name}" FontSize="15"
+                                               Margin="8"
+                                               Foreground="#FFF"/>
+                                                    </Expander.Header>
+                                                    <Border Background="#FFF">
+                                                        <ItemsPresenter />
+                                                    </Border>
+                                                </Expander>
+                                            </ControlTemplate>
+                                        </Setter.Value>
+                                    </Setter>
+                                </Style>
+                            </GroupStyle.ContainerStyle>
+                        </GroupStyle>
+                    </DataGrid.GroupStyle>
+
                     <DataGrid.Columns>
-                        <DataGridTemplateColumn Header="" Width="Auto" CanUserResize="False">
+                        <DataGridTemplateColumn Width="Auto" CanUserResize="False">
                             <DataGridTemplateColumn.CellTemplate>
                                 <DataTemplate>
                                     <CheckBox VerticalAlignment="Center" 
@@ -112,24 +147,52 @@
                             </DataGridTemplateColumn.CellTemplate>
                         </DataGridTemplateColumn>
 
-                        <DataGridTextColumn Header="#" Binding="{Binding Converter={StaticResource rowNumber},
+                        <DataGridTextColumn Header="#" Width="40" Binding="{Binding Converter={StaticResource rowNumber},
 RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGridRow},AncestorLevel=1}}"
         CanUserResize="False"/>
-                        <DataGridTextColumn Width="*" Binding="{Binding Name}" Header="鍚嶇О" />
-                        <DataGridTextColumn Width="*" Binding="{Binding Value}" Header="鍊�" />
-                        <DataGridTextColumn Width="*" Binding="{Binding Unit}" Header="鍗曚綅" />
-                        <DataGridTextColumn Width="*" Binding="{Binding Description}" Header="鎻忚堪" />
-                        <DataGridTextColumn Width="*" Binding="{Binding PGroup}" Header="鍒嗙粍" />
-                        <DataGridTemplateColumn Header="鎿嶄綔" Width="100" IsReadOnly="True" CanUserResize="False">
+                        <DataGridTextColumn Width="150" Binding="{Binding Name}">
+                            <DataGridTextColumn.Header>
+                                <TextBlock Text="{DynamicResource Pm.Parameter.Name}"/>
+                            </DataGridTextColumn.Header>
+                        </DataGridTextColumn>
+                        <DataGridTextColumn Width="60" Binding="{Binding Type}">
+                            <DataGridTextColumn.Header>
+                                <TextBlock Text="{DynamicResource Pm.Parameter.Type}"/>
+                            </DataGridTextColumn.Header>
+                        </DataGridTextColumn>
+                        <DataGridTextColumn Width="*" Binding="{Binding Value}">
+                            <DataGridTextColumn.Header>
+                                <TextBlock Text="{DynamicResource Pm.Parameter.Value}"/>
+                            </DataGridTextColumn.Header>
+                        </DataGridTextColumn>
+                        <DataGridTextColumn Width="80" Binding="{Binding Unit}">
+                            <DataGridTextColumn.Header>
+                                <TextBlock Text="{DynamicResource Pm.Parameter.Unit}"/>
+                            </DataGridTextColumn.Header>
+                        </DataGridTextColumn>
+                        <DataGridTextColumn Width="*" Binding="{Binding Description}">
+                            <DataGridTextColumn.Header>
+                                <TextBlock Text="{DynamicResource Pm.Parameter.Desc}"/>
+                            </DataGridTextColumn.Header>
+                        </DataGridTextColumn>
+                        <DataGridTextColumn Width="120" Binding="{Binding PGroup}">
+                            <DataGridTextColumn.Header>
+                                <TextBlock Text="{DynamicResource Pm.Parameter.Group}"/>
+                            </DataGridTextColumn.Header>
+                        </DataGridTextColumn>
+                        <DataGridTemplateColumn Width="100" IsReadOnly="True" CanUserResize="False">
+                            <DataGridTemplateColumn.Header>
+                                <TextBlock Text="{DynamicResource App.Opt}"/>
+                            </DataGridTemplateColumn.Header>
                             <DataGridTemplateColumn.CellTemplate>
                                 <DataTemplate>
                                     <StackPanel Orientation="Horizontal">
-                                        <Button x:Name="editParameterBtn" Style="{StaticResource RowLink}" Margin="0,0,10,0"
+                                        <Button x:Name="editParameterBtn" Style="{StaticResource EditLink}" Margin="0,0,10,0"
           DataContext="{Binding }"
-          Click="Button_Click">缂栬緫</Button>
-                                        <Button x:Name="delParameterBtn" Style="{StaticResource DangerLinkButton}"
+          Click="Button_Click"/>
+                                        <Button x:Name="delParameterBtn" Style="{StaticResource DeleteLink}"
           DataContext="{Binding }"
-          Click="Button_Click">鍒犻櫎</Button>
+          Click="Button_Click"/>
                                     </StackPanel>
                                 </DataTemplate>
                             </DataGridTemplateColumn.CellTemplate>

--
Gitblit v1.9.1