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 化 + 多设备并发调试 + 后台生命周期管理
---
HMI.AlermInfoManage/AlarmInfoManage.xaml | 304 ++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 240 insertions(+), 64 deletions(-)
diff --git a/HMI.AlermInfoManage/AlarmInfoManage.xaml b/HMI.AlermInfoManage/AlarmInfoManage.xaml
index 74e1f8f..8ca01e9 100644
--- a/HMI.AlermInfoManage/AlarmInfoManage.xaml
+++ b/HMI.AlermInfoManage/AlarmInfoManage.xaml
@@ -10,80 +10,256 @@
xmlns:pw="https://opensource.panuon.com/wpf"
xmlns:pu="https://opensource.panuon.com/wpf-ui"
mc:Ignorable="d"
- Background="{StaticResource WorkspaceBackground}"
+ Background="{DynamicResource WorkspaceBackground}"
Loaded="UserControl_Loaded"
d:DesignHeight="450" d:DesignWidth="800">
-
+ <UserControl.Resources>
+ <ResourceDictionary>
+ <ResourceDictionary.MergedDictionaries>
+ <ResourceDictionary Source="/HMI.UI;component/Style/PanuonListView.xaml"/>
+ </ResourceDictionary.MergedDictionaries>
+ </ResourceDictionary>
+ </UserControl.Resources>
<Border Style="{StaticResource CardBoarder}">
- <StackPanel>
- <DockPanel Margin="0,0,0,10">
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition/>
+ </Grid.RowDefinitions>
+ <DockPanel Grid.Row="0" Margin="0,0,0,10">
<StackPanel DockPanel.Dock="Right" Style="{StaticResource ButtonGroup}">
<Button Style="{StaticResource SettingBtn}" x:Name="settingBtn" Click="Button_Click"/>
<Button Style="{StaticResource RfhBtn}" x:Name="refreshBtn" Click="Button_Click"/>
- <Button Style="{StaticResource ImportBtn}" x:Name="importBtn" Click="Button_Click"/>
+ <!--<Button Style="{StaticResource ImportBtn}" x:Name="importBtn" Click="Button_Click"/>-->
</StackPanel>
+ <!--<TextBlock DockPanel.Dock="Left" FontSize="{StaticResource TitleFontSize}"
+ VerticalAlignment="Center" HorizontalAlignment="Left" Text="{DynamicResource Alm.Title}"/>-->
<TextBlock DockPanel.Dock="Left" FontSize="{StaticResource TitleFontSize}"
- VerticalAlignment="Center" HorizontalAlignment="Left" Text="{DynamicResource Alm.Title}"/>
+ VerticalAlignment="Center" HorizontalAlignment="Left" Text="{DynamicResource Alm.Record}"/>
+ </DockPanel>
+ <DockPanel Grid.Row="1">
+ <StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Right">
+ <pu:Pagination
+ Height="36" Margin="10"
+ HorizontalAlignment="Left"
+ Foreground="Black"
+ ItemsBackground="Transparent"
+ ItemsCornerRadius="12"
+ ItemsSelectedBackground="{DynamicResource SecondPrimaryColor}"
+ x:Name="page"
+ CurrentPage="{Binding CurrentPage}"
+ MaxPage="{Binding MaxPage}"/>
+ </StackPanel>
+ <!--<ListView x:Name="table" Style="{StaticResource DefaultListTable}"
+ VirtualizingPanel.VirtualizationMode="Standard"
+ ItemsSource="{Binding Datasource}">
+ <ListView.View>
+ <GridView>
+ <GridViewColumn Width="50">
+ <GridViewColumn.Header>
+ <TextBlock Text="#"/>
+ </GridViewColumn.Header>
+ <GridViewColumn.CellTemplate>
+ <DataTemplate>
+ <TextBlock Text="{Binding Converter={StaticResource lvRowNumber},
+RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListViewItem,AncestorLevel=1}}"/>
+ </DataTemplate>
+ </GridViewColumn.CellTemplate>
+ </GridViewColumn>
+
+ <GridViewColumn Width="300">
+ <GridViewColumn.Header>
+ <TextBlock Text="{DynamicResource Alm.Source}"/>
+ </GridViewColumn.Header>
+ <GridViewColumn.CellTemplate>
+ <DataTemplate>
+ <Border Style="{StaticResource CellBorder}">
+ <TextBlock VerticalAlignment="Center" Text="{Binding Source}"/>
+ </Border>
+ </DataTemplate>
+ </GridViewColumn.CellTemplate>
+ </GridViewColumn>
+
+ <GridViewColumn Width="500">
+ <GridViewColumn.Header>
+ <TextBlock Text="{DynamicResource Alm.Code}"/>
+ </GridViewColumn.Header>
+ <GridViewColumn.CellTemplate>
+ <DataTemplate>
+ <Border Style="{StaticResource CellBorder}">
+ <TextBlock VerticalAlignment="Center" Text="{Binding AlarmCode}"/>
+ </Border>
+ </DataTemplate>
+ </GridViewColumn.CellTemplate>
+ </GridViewColumn>
+
+ <GridViewColumn Width="800">
+ <GridViewColumn.Header>
+ <TextBlock Text="{DynamicResource Alm.Info}"/>
+ </GridViewColumn.Header>
+ <GridViewColumn.CellTemplate>
+ <DataTemplate>
+ <Border Style="{StaticResource CellBorder}">
+ <TextBlock VerticalAlignment="Center" Text="{Binding AlarmInfo}"/>
+ </Border>
+ </DataTemplate>
+ </GridViewColumn.CellTemplate>
+ </GridViewColumn>
+ <GridViewColumn Width="200">
+ <GridViewColumn.Header>
+ <TextBlock Text="{DynamicResource Alm.Time}"/>
+ </GridViewColumn.Header>
+ <GridViewColumn.CellTemplate>
+ <DataTemplate>
+ <Border Style="{StaticResource CellBorder}">
+ <TextBlock VerticalAlignment="Center" Text="{Binding Time}"/>
+ </Border>
+ </DataTemplate>
+ </GridViewColumn.CellTemplate>
+ </GridViewColumn>
+ </GridView>
+ </ListView.View>
+ </ListView>-->
+ <DataGrid x:Name="table" Style="{StaticResource DefaultDataGrid}"
+ dp:DataGridHelper.ShowRowNumber="True"
+ VirtualizingPanel.VirtualizationMode="Standard"
+ ItemsSource="{Binding Datasource}">
+ <DataGrid.Columns>
+ <DataGridTextColumn Header="#"
+ Binding="{Binding Header, RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}, Mode=FindAncestor}}"
+ Width="40"/>
+ <DataGridTextColumn Width="200" Binding="{Binding Source}">
+ <DataGridTextColumn.Header>
+ <TextBlock Text="{DynamicResource Alm.Source}"/>
+ </DataGridTextColumn.Header>
+ </DataGridTextColumn>
+
+ <DataGridTextColumn Width="200" Binding="{Binding AlarmCode}">
+ <DataGridTextColumn.Header>
+ <TextBlock Text="{DynamicResource Alm.Code}"/>
+ </DataGridTextColumn.Header>
+ </DataGridTextColumn>
+
+ <DataGridTextColumn Width="*" Binding="{Binding AlarmInfo}">
+ <DataGridTextColumn.Header>
+ <TextBlock Text="{DynamicResource Alm.Info}"/>
+ </DataGridTextColumn.Header>
+ </DataGridTextColumn>
+
+ <DataGridTextColumn Width="200" Binding="{Binding Time}">
+ <DataGridTextColumn.Header>
+ <TextBlock Text="{DynamicResource Alm.Time}"/>
+ </DataGridTextColumn.Header>
+ </DataGridTextColumn>
+ </DataGrid.Columns>
+ </DataGrid>
+
+ <!--<DataGrid x:Name="table" Style="{StaticResource DefaultDataGrid}" ItemsSource="{Binding Datasource}">
+ <DataGrid.Columns>
+ <DataGridTemplateColumn Header="" Width="Auto" CanUserResize="False">
+ <DataGridTemplateColumn.CellTemplate>
+ <DataTemplate>
+ <CheckBox VerticalAlignment="Center" IsChecked="{Binding Selected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
+ </DataTemplate>
+ </DataGridTemplateColumn.CellTemplate>
+ </DataGridTemplateColumn>
+ <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 Width="*" Binding="{Binding Source}">
+ <DataGridTextColumn.Header>
+ <TextBlock Text="{DynamicResource Alm.Source}"/>
+ </DataGridTextColumn.Header>
+ </DataGridTextColumn>
+ <DataGridTextColumn Width="*" Binding="{Binding AlarmCode}">
+ <DataGridTextColumn.Header>
+ <TextBlock Text="{DynamicResource Alm.Code}"/>
+ </DataGridTextColumn.Header>
+ </DataGridTextColumn>
+ <DataGridTextColumn Width="*" Binding="{Binding AlarmInfo}">
+ <DataGridTextColumn.Header>
+ <TextBlock Text="{DynamicResource Alm.Info}"/>
+ </DataGridTextColumn.Header>
+ </DataGridTextColumn>
+ <DataGridTextColumn Width="*" Binding="{Binding Time}">
+ <DataGridTextColumn.Header>
+ <TextBlock Text="{DynamicResource Alm.Time}"/>
+ </DataGridTextColumn.Header>
+ </DataGridTextColumn>
+ </DataGrid.Columns>
+ </DataGrid>-->
</DockPanel>
- <DataGrid x:Name="table" Style="{StaticResource DefaultDataGrid}" ItemsSource="{Binding Datasource}">
- <DataGrid.Columns>
- <DataGridTemplateColumn Header="" Width="Auto" CanUserResize="False">
- <DataGridTemplateColumn.CellTemplate>
- <DataTemplate>
- <CheckBox VerticalAlignment="Center" IsChecked="{Binding Selected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
- </DataTemplate>
- </DataGridTemplateColumn.CellTemplate>
- </DataGridTemplateColumn>
- <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 Width="*" Binding="{Binding Source}">
- <DataGridTextColumn.Header>
- <TextBlock Text="{DynamicResource Alm.Source}"/>
- </DataGridTextColumn.Header>
- </DataGridTextColumn>
- <DataGridTextColumn Width="*" Binding="{Binding Code}">
- <DataGridTextColumn.Header>
- <TextBlock Text="{DynamicResource Alm.Code}"/>
- </DataGridTextColumn.Header>
- </DataGridTextColumn>
- <DataGridTextColumn Width="*" Binding="{Binding Info}">
- <DataGridTextColumn.Header>
- <TextBlock Text="{DynamicResource Alm.Info}"/>
- </DataGridTextColumn.Header>
- </DataGridTextColumn>
- <DataGridTextColumn Width="*" Binding="{Binding Time}">
- <DataGridTextColumn.Header>
- <TextBlock Text="{DynamicResource Alm.Time}"/>
- </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="editBtn" Style="{StaticResource EditLink}"
- Margin="0,0,10,0"
- Click="Button_Click"
- DataContext="{Binding }"/>
- <Button x:Name="delBtn" Style="{StaticResource DeleteLink}"
- DataContext="{Binding }"
- Click="Button_Click"/>
- </StackPanel>
- </DataTemplate>
- </DataGridTemplateColumn.CellTemplate>
- </DataGridTemplateColumn>
- </DataGrid.Columns>
- </DataGrid>
- </StackPanel>
+ <!--<TabControl Grid.Row="1" Style="{StaticResource HeaderTabControl}">
+ <TabItem Header="">
+
+ </TabItem>
+ <TabItem Header="鎶ヨ淇℃伅">
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition/>
+ </Grid.RowDefinitions>
+
+ <DataGrid Grid.Row="1" x:Name="alarmTextTable" Visibility="Hidden" Style="{x:Null}">
+ <DataGrid.Columns>
+ <DataGridTemplateColumn Header="" Width="50"/>
+ <DataGridTextColumn x:Name="sb1" Width="*" Binding="{Binding AlarmCode}"/>
+ <DataGridTextColumn x:Name="sb2" Width="*" Binding="{Binding MAlarmText_CN}"/>
+ </DataGrid.Columns>
+ </DataGrid>
+ <ListView Grid.Row="1" Style="{StaticResource DefaultListTable}" ItemsSource="{Binding AlarmTexts}">
+ <ListView.View>
+ <GridView>
+ <GridViewColumn Width="50">
+ <GridViewColumn.Header>
+ <TextBlock Text="#"/>
+ </GridViewColumn.Header>
+ <GridViewColumn.CellTemplate>
+ <DataTemplate>
+ <TextBlock Text="{Binding Converter={StaticResource lvRowNumber},
+RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListViewItem,AncestorLevel=1}}"/>
+ </DataTemplate>
+ </GridViewColumn.CellTemplate>
+ </GridViewColumn>
+
+ <GridViewColumn Width="{Binding ActualWidth,ElementName=sb1}">
+ <GridViewColumn.Header>
+ <TextBlock Text="{DynamicResource Alm.Code}"/>
+ </GridViewColumn.Header>
+ <GridViewColumn.CellTemplate>
+ <DataTemplate>
+ <Border Style="{StaticResource CellBorder}">
+ <TextBlock VerticalAlignment="Center" Text="{Binding AlarmCode}"/>
+ </Border>
+ </DataTemplate>
+ </GridViewColumn.CellTemplate>
+ </GridViewColumn>
+
+ <GridViewColumn Width="{Binding ActualWidth,Converter={StaticResource sbC},ConverterParameter=50,ElementName=sb2}">
+ <GridViewColumn.Header>
+ <TextBlock Text="{DynamicResource Alm.Info}"/>
+ </GridViewColumn.Header>
+ <GridViewColumn.CellTemplate>
+ <DataTemplate>
+ <Border Style="{StaticResource CellBorder}">
+ <TextBlock VerticalAlignment="Center" Text="{Binding MAlarmText_CN}"/>
+ </Border>
+ </DataTemplate>
+ </GridViewColumn.CellTemplate>
+ </GridViewColumn>
+ </GridView>
+ </ListView.View>
+ </ListView>
+ </Grid>
+ </TabItem>
+ </TabControl>-->
+ </Grid>
</Border>
</hb:PluginControl>
--
Gitblit v1.9.1