From 12e606635c42ea20f4b7c2bdda5204237a4b4c96 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期一, 02 三月 2026 16:14:49 +0800
Subject: [PATCH] 优化

---
 Plugin.TsExecution/SingleControl.xaml |  250 ++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 181 insertions(+), 69 deletions(-)

diff --git a/Plugin.TsExecution/SingleControl.xaml b/Plugin.TsExecution/SingleControl.xaml
index 6d87ceb..905a810 100644
--- a/Plugin.TsExecution/SingleControl.xaml
+++ b/Plugin.TsExecution/SingleControl.xaml
@@ -7,6 +7,7 @@
              xmlns:pw="https://opensource.panuon.com/wpf"
              xmlns:pu="https://opensource.panuon.com/wpf-ui"
              xmlns:local="clr-namespace:Plugin.TsExecution"
+             xmlns:cdp="clr-namespace:HMI.Core.DpUtil;assembly=HMI.Core"
              mc:Ignorable="d" 
              xmlns:sys="clr-namespace:System;assembly=mscorlib"
              Loaded="UserControl_Loaded"
@@ -18,6 +19,7 @@
     <UserControl.Resources>
         <ResourceDictionary>
             <ResourceDictionary.MergedDictionaries>
+                <ResourceDictionary Source="/HMI.UI;component/Style/PanuonListView.xaml"/>
                 <ResourceDictionary Source="/HMI.UI;component/Style/PanuonDataGrid.xaml"/>
             </ResourceDictionary.MergedDictionaries>
             <sys:Double x:Key="nanD">NaN</sys:Double>
@@ -27,14 +29,14 @@
                 <Setter Property="VerticalContentAlignment" Value="Center"/>
                 <Setter Property="Padding" Value="5"/>
                 <Setter Property="FontSize" Value="{Binding ActualWidth,ElementName=control,
-Converter={StaticResource fc}, ConverterParameter='20,1093,20'}"/>
+Converter={StaticResource fc}, ConverterParameter='25,1093'}"/>
             </Style>
             <Style TargetType="TextBlock" x:Key="baseText">
                 <Setter Property="HorizontalAlignment" Value="Left"/>
                 <Setter Property="VerticalAlignment" Value="Center"/>
                 <Setter Property="Padding" Value="0,0,2,0"/>
                 <Setter Property="FontSize" Value="{Binding ActualWidth,ElementName=control,
-Converter={StaticResource fc}, ConverterParameter='20,1093,20'}"/>
+Converter={StaticResource fc}, ConverterParameter='25,1093'}"/>
             </Style>
             <Brush x:Key="passedColor">#beed00</Brush>
         </ResourceDictionary>
@@ -49,8 +51,8 @@
             <RowDefinition Height="Auto"/>
         </Grid.RowDefinitions>
 
-        <Grid dp:GridHelper.InnerBorder="1" dp:GridHelper.Space="5" 
-              dp:GridHelper.InnerBorderBrush="{StaticResource CommonBoarder}">
+        <Grid dp:GridHelper.InnerBorder="1" dp:GridHelper.Space="2" 
+              dp:GridHelper.InnerBorderBrush="{DynamicResource CommonBoarder}">
             <Grid.RowDefinitions>
                 <RowDefinition Height="Auto"/>
                 <RowDefinition/>
@@ -72,10 +74,10 @@
                                 <Setter Property="Background" Value="Gold"/>
                             </DataTrigger>
                             <DataTrigger Binding="{Binding Status}" Value="Failed">
-                                <Setter Property="Background" Value="{StaticResource DangerColor}"/>
+                                <Setter Property="Background" Value="{DynamicResource DangerColor}"/>
                             </DataTrigger>
                             <DataTrigger Binding="{Binding Status}" Value="Failed">
-                                <Setter Property="Background" Value="{StaticResource DangerColor}"/>
+                                <Setter Property="Background" Value="{DynamicResource DangerColor}"/>
                             </DataTrigger>
                             <DataTrigger Binding="{Binding Status}" Value="Ready">
                                 <Setter Property="Background" Value="DeepSkyBlue"/>
@@ -106,11 +108,11 @@
                                 </DataTrigger>
                                 <DataTrigger Binding="{Binding Status}" Value="Failed">
                                     <Setter Property="Content" Value="&#xe604;"/>
-                                    <Setter Property="Background" Value="{StaticResource DangerColor}"/>
+                                    <Setter Property="Background" Value="{DynamicResource DangerColor}"/>
                                 </DataTrigger>
                                 <DataTrigger Binding="{Binding Status}" Value="Failed">
                                     <Setter Property="Content" Value="&#xe604;"/>
-                                    <Setter Property="Background" Value="{StaticResource DangerColor}"/>
+                                    <Setter Property="Background" Value="{DynamicResource DangerColor}"/>
                                 </DataTrigger>
                                 <DataTrigger Binding="{Binding Status}" Value="Ready">
                                     <Setter Property="Content" Value="&#xe6ae;"/>
@@ -158,7 +160,7 @@
             </Label>
         </Grid>
 
-        <Grid Grid.Row="2" x:Name="simplePanel" dp:GridHelper.Space="5" dp:GridHelper.SpaceIgnore="TOP">
+        <Grid Grid.Row="2" x:Name="simplePanel" dp:GridHelper.Space="2" dp:GridHelper.SpaceIgnore="TOP">
             <Grid.RowDefinitions>
                 <RowDefinition/>
                 <RowDefinition Height="Auto"/>
@@ -178,7 +180,7 @@
                                 <Setter Property="Foreground" Value="#000"/>
                             </DataTrigger>
                             <DataTrigger Binding="{Binding Status}" Value="Failed">
-                                <Setter Property="Background" Value="{StaticResource DangerColor}"/>
+                                <Setter Property="Background" Value="{DynamicResource DangerColor}"/>
                                 <Setter Property="Content" Value="--FAIL--"/>
                                 <Setter Property="Foreground" Value="#000"/>
                             </DataTrigger>
@@ -202,85 +204,193 @@
                 <RowDefinition Height="Auto"/>
             </Grid.RowDefinitions>
 
-            <DataGrid Grid.Row="0" Style="{StaticResource DefaultDataGrid}" 
-                      Margin="5,0,5,5"
-                  pu:DataGridHelper.ColumnHeaderFontSize="{Binding ActualWidth,
+            <!--<ListView Grid.Row="0" Style="{StaticResource DefaultListTable}" x:Name="table"
+                      ItemsSource="{Binding Datasource}"
+                      VirtualizingPanel.IsContainerVirtualizable="True"
+VirtualizingPanel.IsVirtualizing="True" 
+VirtualizingPanel.VirtualizationMode="Recycling"
+                      pu:ListViewHelper.ItemsHeight="{StaticResource nanD}"
+                      pu:ListViewHelper.ColumnHeaderFontSize="{Binding ActualWidth,
             ElementName=control,
 Converter={StaticResource fc}, ConverterParameter='15,1093,15,22'}"
-            FontSize="{Binding ActualWidth,
+                                  FontSize="{Binding ActualWidth,
             ElementName=control,
 Converter={StaticResource fc}, ConverterParameter='15,1093,15,20'}"
-                  pu:DataGridHelper.ColumnHeaderPadding="3"
+                      pu:ListViewHelper.ColumnHeaderHeight="{Binding ActualWidth,ElementName=control,
+Converter={StaticResource fc}, ConverterParameter='30,1093,-1,45'}">
+                <ListView.View>
+                    <GridView AllowsColumnReorder="False">
+                        <GridViewColumn Width="60" Header="#">
+                            <GridViewColumn.CellTemplate>
+                                <DataTemplate>
+                                    <TextBlock Text="{Binding Converter={StaticResource lvRowNumber},
+RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListViewItem,AncestorLevel=1}}"/>
+                                </DataTemplate>
+                            </GridViewColumn.CellTemplate>
+                        </GridViewColumn>
+
+                        <GridViewColumn Width="200">
+                            <GridViewColumn.Header>
+                                <TextBlock Text="{DynamicResource Test.Name}"/>
+                            </GridViewColumn.Header>
+                            <GridViewColumn.CellTemplate>
+                                <DataTemplate>
+                                    <DockPanel>
+                                        <Border Style="{StaticResource CellBorder}">
+                                            <TextBlock Style="{StaticResource ListTableTextBlock}" 
+                                                       Text="{Binding Name}"/>
+                                        </Border>
+                                    </DockPanel>
+                                </DataTemplate>
+                            </GridViewColumn.CellTemplate>
+                        </GridViewColumn>
+                        <GridViewColumn Width="100">
+                            <GridViewColumn.Header>
+                                <TextBlock Text="{DynamicResource Test.Unit}"/>
+                            </GridViewColumn.Header>
+                            <GridViewColumn.CellTemplate>
+                                <DataTemplate>
+                                    <Grid HorizontalAlignment="Stretch" VerticalAlignment="Center">
+                                    <Border Style="{StaticResource CellBorder}" MouseDown="TextBlock_MouseDown">
+                                        <TextBlock Style="{StaticResource ListTableTextBlock}" 
+                                                   Text="{Binding Unit}"/>
+                                        </Border>
+                                    </Grid>
+                                </DataTemplate>
+                            </GridViewColumn.CellTemplate>
+                        </GridViewColumn>
+                        <GridViewColumn Width="120">
+                            <GridViewColumn.Header>
+                                <TextBlock Text="{DynamicResource Test.Value}"/>
+                            </GridViewColumn.Header>
+                            <GridViewColumn.CellTemplate>
+                                <DataTemplate>
+                                    <Border Style="{StaticResource CellBorder}">
+                                        <TextBlock Style="{StaticResource ListTableTextBlock}" 
+                                                   Text="{Binding Value}"/>
+                                    </Border>
+                                </DataTemplate>
+                            </GridViewColumn.CellTemplate>
+                        </GridViewColumn>
+                        <GridViewColumn Width="120">
+                            <GridViewColumn.Header>
+                                <TextBlock Text="{DynamicResource Test.LimitDown}"/>
+                            </GridViewColumn.Header>
+                            <GridViewColumn.CellTemplate>
+                                <DataTemplate>
+                                    <Border Style="{StaticResource CellBorder}">
+                                        <TextBlock Style="{StaticResource ListTableTextBlock}" 
+                                                   Text="{Binding LimitDown}"/>
+                                    </Border>
+                                </DataTemplate>
+                            </GridViewColumn.CellTemplate>
+                        </GridViewColumn>
+                        <GridViewColumn Width="120">
+                            <GridViewColumn.Header>
+                                <TextBlock Text="{DynamicResource Test.LimitUp}"/>
+                            </GridViewColumn.Header>
+                            <GridViewColumn.CellTemplate>
+                                <DataTemplate>
+                                    <Border Style="{StaticResource CellBorder}">
+                                        <TextBlock Style="{StaticResource ListTableTextBlock}" 
+                                                   Text="{Binding LimitUp}"/>
+                                    </Border>
+                                </DataTemplate>
+                            </GridViewColumn.CellTemplate>
+                        </GridViewColumn>
+                        <GridViewColumn Width="180">
+                            <GridViewColumn.Header>
+                                <TextBlock Text="{DynamicResource Test.ConsumeTime}"/>
+                            </GridViewColumn.Header>
+                            <GridViewColumn.CellTemplate>
+                                <DataTemplate>
+                                    <Border Style="{StaticResource CellBorder}">
+                                        <TextBlock Style="{StaticResource ListTableTextBlock}" 
+                                                   Text="{Binding ConsumeTime}"/>
+                                    </Border>
+                                </DataTemplate>
+                            </GridViewColumn.CellTemplate>
+                        </GridViewColumn>
+                        <GridViewColumn Width="120">
+                            <GridViewColumn.Header>
+                                <TextBlock Text="{DynamicResource Test.Result}"/>
+                            </GridViewColumn.Header>
+                            <GridViewColumn.CellTemplate>
+                                <DataTemplate>
+                                    <Grid x:Name="border" Margin="0">
+                                        <TextBlock x:Name="text" Margin="-1" Padding="0" VerticalAlignment="Center" Text="{Binding Result}"/>
+                                    </Grid>
+                                    <DataTemplate.Triggers>
+                                        <DataTrigger Binding="{Binding Result}" Value="Passed">
+                                            <Setter TargetName="border" Property="Background" Value="{StaticResource passedColor}"/>
+                                            <Setter TargetName="text" Property="Foreground" Value="#000"/>
+                                        </DataTrigger>
+                                        <DataTrigger Binding="{Binding Result}" Value="Failed">
+                                            <Setter TargetName="border" Property="Background" Value="{DynamicResource DangerColor}"/>
+                                            <Setter TargetName="text" Property="Foreground" Value="#000"/>
+                                        </DataTrigger>
+                                    </DataTemplate.Triggers>
+                                </DataTemplate>
+                            </GridViewColumn.CellTemplate>
+                        </GridViewColumn>
+                    </GridView>
+                </ListView.View>
+            </ListView>-->
+
+            <DataGrid Grid.Row="0" Style="{StaticResource DefaultDataGrid}" Margin="2,0,2,2"
+                  FontSize="{DynamicResource tableFontSize}"
                   dp:DataGridHelper.ShowRowNumber="True"
                   VirtualizingPanel.IsContainerVirtualizable="True"
                   VirtualizingPanel.IsVirtualizing="True" 
                   VirtualizingPanel.VirtualizationMode="Recycling"
                   RowHeight="{StaticResource nanD}"
                   ColumnHeaderHeight="{Binding ActualWidth,ElementName=control,
-Converter={StaticResource fc}, ConverterParameter='30,1093,-1,45'}"
-                  ItemsSource="{Binding Datasource}"
-                  x:Name="table">
-                <DataGrid.Resources>
-                    <Style TargetType="DataGridCell" 
-       BasedOn="{StaticResource {x:Static pu:StyleKeys.DataGridCellStyle}}">
-                        <Setter Property="Background" Value="Transparent"/>
-                        <Setter Property="Padding" Value="2"/>
-                        <Setter Property="BorderThickness" Value="0"/>
-                        <Setter Property="Background" Value="Transparent"/>
-                    </Style>
-
-                    <Style TargetType="DataGridColumnHeader" 
-BasedOn="{StaticResource {x:Static pu:StyleKeys.DataGridColumnHeaderStyle}}">
-                        <Setter Property="Padding" Value="5"/>
-                        <Setter Property="BorderThickness" Value="0"/>
-                    </Style>
-                </DataGrid.Resources>
+Converter={StaticResource fc}, ConverterParameter='32,1093,30,45'}"
+                      HorizontalScrollBarVisibility="Disabled"
+                  ItemsSource="{Binding Datasource}" x:Name="table">
 
                 <DataGrid.Columns>
-                    <!--<DataGridTemplateColumn Header="#" CanUserResize="False">
-                    <DataGridTemplateColumn.CellTemplate>
-                        <DataTemplate>
-                            <TextBlock Text="{Binding Converter={StaticResource rowNumber},
-RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGridRow},AncestorLevel=1}}"/>
-                        </DataTemplate>
-                    </DataGridTemplateColumn.CellTemplate>
-                </DataGridTemplateColumn>-->
-
                     <DataGridTextColumn Header="#" 
-                                        ElementStyle="{StaticResource TableTextBlock}"
-                        Binding="{Binding Header, RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}, Mode=FindAncestor}}" 
-                                    Width="60"/>
-                    <DataGridTextColumn Width="*" Binding="{Binding Name}" 
-                                        ElementStyle="{StaticResource TableTextBlock}">
+                            ElementStyle="{StaticResource TableTextBlock}"
+            Binding="{Binding Header, RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}, Mode=FindAncestor}}" 
+                        Width="0.4*"/>
+                    <DataGridTextColumn Width="2.5*" Binding="{Binding Name}" 
+                            ElementStyle="{StaticResource TableTextBlock}">
                         <DataGridTextColumn.Header>
                             <TextBlock Text="{DynamicResource Test.Name}"/>
                         </DataGridTextColumn.Header>
                     </DataGridTextColumn>
-                    <DataGridTextColumn Width="100" Binding="{Binding Unit}" 
-                                        ElementStyle="{StaticResource TableTextBlock}">
+                    <DataGridTextColumn Width="0.8*" Binding="{Binding Unit}" 
+                            ElementStyle="{StaticResource TableTextBlock}">
                         <DataGridTextColumn.Header>
                             <TextBlock Text="{DynamicResource Test.Unit}"/>
                         </DataGridTextColumn.Header>
                     </DataGridTextColumn>
-                    <DataGridTextColumn Width="*" Binding="{Binding Value}" 
-                                        ElementStyle="{StaticResource TableTextBlock}">
+                    <DataGridTextColumn Width="2*" Binding="{Binding Value}" 
+                            ElementStyle="{StaticResource TableTextBlock}">
                         <DataGridTextColumn.Header>
                             <TextBlock Text="{DynamicResource Test.Value}"/>
                         </DataGridTextColumn.Header>
                     </DataGridTextColumn>
-                    <DataGridTextColumn Width="*" Binding="{Binding LimitDown}" 
-                                        ElementStyle="{StaticResource TableTextBlock}">
+                    <DataGridTextColumn Width="1.5*" Binding="{Binding LimitDown}" 
+                            ElementStyle="{StaticResource TableTextBlock}">
                         <DataGridTextColumn.Header>
                             <TextBlock Text="{DynamicResource Test.LimitDown}"/>
                         </DataGridTextColumn.Header>
                     </DataGridTextColumn>
-                    <DataGridTextColumn Width="*" Binding="{Binding LimitUp}" 
-                                        ElementStyle="{StaticResource TableTextBlock}">
+                    <DataGridTextColumn Width="1.5*" Binding="{Binding LimitUp}" 
+                            ElementStyle="{StaticResource TableTextBlock}">
                         <DataGridTextColumn.Header>
                             <TextBlock Text="{DynamicResource Test.LimitUp}"/>
                         </DataGridTextColumn.Header>
                     </DataGridTextColumn>
-                    <DataGridTemplateColumn Width="120">
+                    <DataGridTextColumn Width="0.6*" Binding="{Binding ConsumeTime}"
+        ElementStyle="{StaticResource TableTextBlock}">
+                        <DataGridTextColumn.Header>
+                            <TextBlock Text="{DynamicResource Test.ConsumeTime}"/>
+                        </DataGridTextColumn.Header>
+                    </DataGridTextColumn>
+                    <DataGridTemplateColumn Width="1*">
                         <DataGridTemplateColumn.Header>
                             <TextBlock Text="{DynamicResource Test.Result}"/>
                         </DataGridTemplateColumn.Header>
@@ -295,7 +405,7 @@
                                         <Setter TargetName="text" Property="Foreground" Value="#000"/>
                                     </DataTrigger>
                                     <DataTrigger Binding="{Binding Result}" Value="Failed">
-                                        <Setter TargetName="border" Property="Background" Value="{StaticResource DangerColor}"/>
+                                        <Setter TargetName="border" Property="Background" Value="{DynamicResource DangerColor}"/>
                                         <Setter TargetName="text" Property="Foreground" Value="#000"/>
                                     </DataTrigger>
                                 </DataTemplate.Triggers>
@@ -318,7 +428,7 @@
 
                     <StackPanel DockPanel.Dock="Right" Orientation="Horizontal" Margin="0,0,5,0">
                         <!--<Button FontSize="12" x:Name="scannerSetting" 
-                                Margin="0,0,10,0" Click="Button_Click" Content="鎵爜鏋缃�">
+                                Margin="0,0,10,0" Click="Button_Click" Content="{DynamicResource App.ScannerSetting}">
                             <Button.Style>
                                 <Style TargetType="Button" BasedOn="{StaticResource LinkButton}">
                                     <Style.Triggers>
@@ -346,8 +456,10 @@
 VerticalContentAlignment="Center" Content="{Binding ProbeWarn}"/>
                         </StackPanel>
 
-                        <Button FontSize="12" Style="{StaticResource LinkButton}" x:Name="clear" Margin="10,0,0,0" Click="Button_Click" 
-                            Content="{DynamicResource App.Clear}"/>
+                        <Button FontSize="12" Style="{StaticResource LinkButton}" 
+                                cdp:PermissionHelper.RequiredPermission="Permission:ClearProbeCount"
+                                x:Name="clear" Margin="10,0,0,0" Click="Button_Click" 
+                            Content="{DynamicResource App.Clear}" Cursor=""/>
                     </StackPanel>
 
                     <Label x:Name="probeCountAlarm" Visibility="Collapsed" DockPanel.Dock="Left" Padding="30,0" FontSize="12" Foreground="Red"
@@ -358,6 +470,8 @@
         </Grid>
 
         <Canvas Grid.Row="0" Grid.RowSpan="5" Visibility="Collapsed"
+                VirtualizingPanel.IsVirtualizing="False"
+                VirtualizingPanel.VirtualizationMode="Standard"
                 Background="#AAFFFFFF" x:Name="pausePanel" SizeChanged="pausePanel_Loaded">
             <Border BorderBrush="#000" Background="#FFF" BorderThickness="0.5"
                     CornerRadius="5"
@@ -372,17 +486,15 @@
                         <ColumnDefinition Width="Auto"/>
                         <ColumnDefinition />
                     </Grid.ColumnDefinitions>
-                    <Border Padding="10,5,0,5" Grid.ColumnSpan="2" Background="{StaticResource WarningColor}"
+                    <Border Padding="10,5,0,5" Grid.ColumnSpan="2" Background="{DynamicResource WarningColor}"
                            CornerRadius="5,5,0,0">
                         <Label Padding="0" Margin="0" Foreground="#FFF" Content="{DynamicResource App.Warn}"/>
                     </Border>
 
                     <TextBlock Margin="20,20,20,0" Grid.Row="1" 
                                FontSize="40"
-                               FontFamily="/Panuon.WPF.UI;component/Resources/Fonts/#PanuonIcon"
-           Foreground="#F9D01A"
-           Text="&#xe931;"
-           />
+                               FontFamily="/Panuon.WPF.UI;component/Resources/Fonts/#PanuonIcon" 
+                               Foreground="#F9D01A" Text="&#xe931;"/>
 
                     <Label Margin="0,20,20,0" Grid.Row="1" Grid.Column="1" Content="{DynamicResource Ts.PauseMsg}"/>
                     <StackPanel Margin="10" Grid.Row="2" Grid.ColumnSpan="2" Orientation="Horizontal" HorizontalAlignment="Right">
@@ -392,14 +504,14 @@
                         <Button Style="{StaticResource ModalButton}" 
                                 x:Name="continuePauseBtn"
                                 Click="Button_Click"
-                                Background="{StaticResource WarningColor}"
+                                Background="{DynamicResource WarningColor}"
                                 Tag="OK" Content="{DynamicResource App.Continue}"/>
                     </StackPanel>
                 </Grid>
             </Border>
         </Canvas>
 
-        <Canvas Grid.Row="0" Grid.RowSpan="5" Visibility="Collapsed"
+        <!--<Canvas Grid.Row="0" Grid.RowSpan="5" Visibility="Collapsed"
         Background="#AAFFFFFF" x:Name="scannerPanel" SizeChanged="pausePanel_Loaded">
             <Border BorderBrush="#000" Background="#FFF" BorderThickness="0.5" CornerRadius="5" x:Name="scannerVisualModal">
                 <Grid>
@@ -412,7 +524,7 @@
                         <ColumnDefinition Width="Auto"/>
                         <ColumnDefinition />
                     </Grid.ColumnDefinitions>
-                    <Border Padding="10,5,0,5" Grid.ColumnSpan="2" Background="{StaticResource PrimaryColor}"
+                    <Border Padding="10,5,0,5" Grid.ColumnSpan="2" Background="{DynamicResource PrimaryColor}"
                    CornerRadius="5,5,0,0">
                         <Label Padding="0" Margin="0" Foreground="#FFF" Content="璇锋壂鐮�"/>
                     </Border>
@@ -435,7 +547,7 @@
                     </StackPanel>
                 </Grid>
             </Border>
-        </Canvas>
+        </Canvas>-->
 
 
         <!--<DockPanel Grid.Row="4">

--
Gitblit v1.9.1