From 559890c482f5973f06aafdfec9550fee5ba3c7f2 Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 09 十一月 2026 17:02:15 +0800
Subject: [PATCH] feat: CAN 模拟器 TCP 化 + 多设备并发调试 + 后台生命周期管理

---
 Plugin.TestResult/InfoWindow.xaml |  122 +++++++++++++++++++++++++++++++++++-----
 1 files changed, 107 insertions(+), 15 deletions(-)

diff --git a/Plugin.TestResult/InfoWindow.xaml b/Plugin.TestResult/InfoWindow.xaml
index e80ad29..169411f 100644
--- a/Plugin.TestResult/InfoWindow.xaml
+++ b/Plugin.TestResult/InfoWindow.xaml
@@ -1,25 +1,117 @@
-锘�<Window x:Class="Plugin.TestResult_WPF.InfoWindow"
+锘�<pu:WindowX x:Class="Plugin.TestResult_WPF.InfoWindow"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:local="clr-namespace:Plugin.TestResult_WPF"
         mc:Ignorable="d"
-        Title="{Binding title}" Height="500" Width="800">
-    <DataGrid ItemsSource="{Binding dataSource}" AutoGenerateColumns="False"
+        Style="{StaticResource ModalWindow}"
+        xmlns:hb="clr-namespace:HMI.Base;assembly=HMI.Base"
+        xmlns:uic="clr-namespace:HMI.UI.Converter;assembly=HMI.UI"
+        xmlns:pw="https://opensource.panuon.com/wpf"
+        xmlns:pu="https://opensource.panuon.com/wpf-ui"
+        xmlns:dp="clr-namespace:HMI.UI.DpUtil;assembly=HMI.UI"
+        xmlns:cc="clr-namespace:HMI.Core;assembly=HMI.Core"
+        InteropOwnersMask="False"
+        Topmost="False"
+        Loaded="Window_Loaded"
+        SizeToContent="Height"
+        Unloaded="Window_Unloaded"
+        SizeChanged="Window_SizeChanged"
+        pu:WindowXModalDialog.Buttons="{x:Null}"
+        Title="{Binding title}" Width="800" Height="825">
+    <Grid x:Name="mainGrid">
+        <Grid.RowDefinitions>
+            <RowDefinition Height="500"/>
+            <RowDefinition Height="*"/>
+            <RowDefinition Height="*"/>
+            <RowDefinition Height="*"/>
+            <RowDefinition Height="25"/>
+        </Grid.RowDefinitions>
+        <DataGrid ItemsSource="{Binding dataSource}" AutoGenerateColumns="False"
               CanUserAddRows="False"
               CanUserDeleteRows="False"
               IsReadOnly="True"
               ColumnWidth="*"
-              FontSize="16"
-              >
-        <DataGrid.Columns>
-            <DataGridTextColumn Header="娴嬭瘯椤瑰悕绉�" Binding="{Binding step}"/>
-            <DataGridTextColumn Header="娴嬭瘯鍊�" Binding="{Binding value}"/>
-            <DataGridTextColumn Header="娴嬭瘯缁撴灉" Binding="{Binding result}"/>
-            <DataGridTextColumn Header="娴嬭瘯鑼冨洿" Binding="{Binding range}"/>
-            <DataGridTextColumn Header="娴嬭瘯鏉′欢" Binding="{Binding condition}"/>
-            <DataGridTextColumn Header="鏇存柊鏃堕棿" Binding="{Binding updateTime}"/>
-        </DataGrid.Columns>
-    </DataGrid>
-</Window>
+              VirtualizingPanel.IsContainerVirtualizable="True"
+              VirtualizingPanel.IsVirtualizing="True"
+              VirtualizingStackPanel.VirtualizationMode="Recycling"
+              FontSize="16">
+            <DataGrid.Resources>
+                <Style TargetType="ScrollBar" BasedOn="{StaticResource ScrollStyle_Mobile}"/>
+            </DataGrid.Resources>
+            <DataGrid.Columns>
+                <!--<DataGridTemplateColumn Header="#" CanUserResize="False" Width="Auto">
+                    <DataGridTemplateColumn.CellTemplate>
+                        <DataTemplate>
+                            <TextBlock Text="{Binding Converter={StaticResource rowNumber},
+RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGridRow},AncestorLevel=1}}"/>
+                        </DataTemplate>
+                    </DataGridTemplateColumn.CellTemplate>
+                </DataGridTemplateColumn>-->
+                <DataGridTextColumn Binding="{Binding step}">
+                    <DataGridTextColumn.Header>
+                        <TextBlock Text="{DynamicResource Test.Name}"/>
+                    </DataGridTextColumn.Header>
+                </DataGridTextColumn>
+                <DataGridTextColumn Binding="{Binding value}">
+                    <DataGridTextColumn.Header>
+                        <TextBlock Text="{DynamicResource Test.Value}"/>
+                    </DataGridTextColumn.Header>
+                </DataGridTextColumn>
+                <DataGridTextColumn Binding="{Binding limitUp}">
+                    <DataGridTextColumn.Header>
+                        <TextBlock Text="{DynamicResource Test.LimitUp}"/>
+                    </DataGridTextColumn.Header>
+                </DataGridTextColumn>
+                <DataGridTextColumn Binding="{Binding limitDown}">
+                    <DataGridTextColumn.Header>
+                        <TextBlock Text="{DynamicResource Test.LimitDown}"/>
+                    </DataGridTextColumn.Header>
+                </DataGridTextColumn>
+                <DataGridTextColumn Binding="{Binding unit}">
+                    <DataGridTextColumn.Header>
+                        <TextBlock Text="{DynamicResource Test.Unit}"/>
+                    </DataGridTextColumn.Header>
+                </DataGridTextColumn>
+                <DataGridTextColumn Binding="{Binding result}">
+                    <DataGridTextColumn.Header>
+                        <TextBlock Text="{DynamicResource Test.Result}"/>
+                    </DataGridTextColumn.Header>
+                </DataGridTextColumn>
+                <DataGridTextColumn Binding="{Binding updateTime}">
+                    <DataGridTextColumn.Header>
+                        <TextBlock Text="{DynamicResource Test.TestTime}"/>
+                    </DataGridTextColumn.Header>
+                </DataGridTextColumn>
+            </DataGrid.Columns>
+        </DataGrid>
+
+        <Grid Background="#f1eded" Grid.Row="4">
+            <DockPanel>
+                <StackPanel DockPanel.Dock="Right" Orientation="Horizontal" Margin="0,0,30,0">
+                    <Label Padding="0" FontSize="12" 
+VerticalAlignment="Center"
+VerticalContentAlignment="Center" Content="{DynamicResource Ts.ProbeCount}"/>
+                    <Label Padding="0" FontSize="12"  Margin="0,0,15,0"
+VerticalAlignment="Center"
+VerticalContentAlignment="Center" Content="{Binding ProbeCount}"/>
+
+
+                    <Label x:Name="alarmLabel" Padding="0" FontSize="12" 
+VerticalAlignment="Center"
+VerticalContentAlignment="Center" Content="{DynamicResource Ts.ProbeAlarmCount}"/>
+                    <Label x:Name="alarmValue" Padding="0" FontSize="12" 
+VerticalAlignment="Center"
+VerticalContentAlignment="Center" Content="{Binding ProbeWarn}"/>
+
+                    <Button Style="{StaticResource LinkButton}" Margin="10,0,0,0" Click="Button_Click" >娓呯┖</Button>
+                </StackPanel>
+
+                <Label x:Name="probeCountAlarm" Visibility="Collapsed" DockPanel.Dock="Left" Padding="30,0" FontSize="12" Foreground="Red"
+VerticalAlignment="Center"
+VerticalContentAlignment="Center" Content="{DynamicResource Ts.ProbeAlarm}"/>
+            </DockPanel>
+        </Grid>
+    </Grid>
+</pu:WindowX>

--
Gitblit v1.9.1