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 作为历史根节点
---
Plugin.DeviceConfig/DeviceConfig.xaml | 293 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 293 insertions(+), 0 deletions(-)
diff --git a/Plugin.DeviceConfig/DeviceConfig.xaml b/Plugin.DeviceConfig/DeviceConfig.xaml
new file mode 100644
index 0000000..4dab71d
--- /dev/null
+++ b/Plugin.DeviceConfig/DeviceConfig.xaml
@@ -0,0 +1,293 @@
+<hb:SimpleMaskControl x:Class="Plugin.DeviceConfig.DeviceConfig"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:hb="clr-namespace:HMI.Base;assembly=HMI.Base"
+ xmlns:ui="clr-namespace:HMI.UI;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:local="clr-namespace:Plugin.DeviceConfig"
+ mc:Ignorable="d"
+ Loaded="SimpleMaskControl_Loaded"
+ d:DesignHeight="700" d:DesignWidth="1200">
+ <hb:SimpleMaskControl.Resources>
+ <ResourceDictionary>
+ <ResourceDictionary.MergedDictionaries>
+ <ResourceDictionary Source="/HMI.UI;component/Style/PanuonListView.xaml"/>
+ </ResourceDictionary.MergedDictionaries>
+ <Style x:Key="TitleBox" TargetType="TextBlock">
+ <Setter Property="FontSize" Value="14"/>
+ <Setter Property="FontWeight" Value="SemiBold"/>
+ <Setter Property="Padding" Value="8,4"/>
+ <Setter Property="VerticalAlignment" Value="Center"/>
+ </Style>
+ </ResourceDictionary>
+ </hb:SimpleMaskControl.Resources>
+
+ <Grid dp:GridHelper.Space="8">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="Auto"/>
+ </Grid.RowDefinitions>
+
+ <!-- 椤堕儴宸ュ叿鏍� -->
+ <DockPanel Grid.Row="0">
+ <StackPanel dp:StackPanelHelper.ChildSpace="10" DockPanel.Dock="Right" Orientation="Horizontal">
+ <Button Style="{StaticResource AddBtn}" x:Name="addBtn" Click="Button_Click"/>
+ <Button Style="{StaticResource EditBtn}" x:Name="editBtn" Content="缂栬緫" Click="Button_Click"/>
+ <Button Style="{StaticResource DelBtn}" x:Name="delBtn" Content="鍒犻櫎" Click="Button_Click"/>
+ <Button x:Name="batchBtn" Click="Button_Click" Content="鎵归噺鐢熸垚"
+ Style="{StaticResource AddBtn}"/>
+ <Button Style="{StaticResource ImportBtn}" x:Name="importBtn" Click="Button_Click"/>
+ <Button Style="{StaticResource ExportBtn}" x:Name="exportBtn" Click="Button_Click"/>
+ <Button x:Name="versionBtn" Click="Button_Click" Content="鐗堟湰绠$悊"
+ Style="{StaticResource RfhBtn}"/>
+ <Button Style="{StaticResource RfhBtn}" x:Name="rfhBtn" Click="Button_Click"/>
+ </StackPanel>
+ <TextBlock Style="{StaticResource TitleBox}" Text="浠櫒浠〃娉ㄥ唽"/>
+ </DockPanel>
+
+ <!-- 涓讳綋涓夋爮鍖哄煙 -->
+ <Grid Grid.Row="1">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="250"/>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="300"/>
+ </Grid.ColumnDefinitions>
+
+ <!-- 宸︽爮锛氳澶囧垎绫绘爲 -->
+ <Border Grid.Column="0" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1" CornerRadius="4" Margin="0,0,4,0">
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <TextBox x:Name="searchBox" Grid.Row="0" Margin="6"
+ pu:TextBoxHelper.Watermark="鎼滅储璁惧..."
+ Style="{StaticResource EditorTextBoxStyle}"
+ TextChanged="SearchBox_TextChanged"/>
+ <TreeView x:Name="deviceTree" Grid.Row="1" Margin="4"
+ SelectedItemChanged="DeviceTree_SelectedItemChanged">
+ <TreeView.ItemTemplate>
+ <HierarchicalDataTemplate ItemsSource="{Binding Children}">
+ <TextBlock Text="{Binding Name}" FontWeight="SemiBold"/>
+ </HierarchicalDataTemplate>
+ </TreeView.ItemTemplate>
+ </TreeView>
+ </Grid>
+ </Border>
+
+ <!-- 涓爮锛氳澶囪鎯� -->
+ <Border Grid.Column="1" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1" CornerRadius="4" Margin="2,0,2,0">
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+
+ <!-- 璁惧鍩烘湰淇℃伅琛ㄥ崟 -->
+ <GroupBox Grid.Row="0" Header="璁惧淇℃伅" Margin="6" FontWeight="SemiBold">
+ <Grid Margin="8">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="120"/>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="120"/>
+ <ColumnDefinition Width="*"/>
+ </Grid.ColumnDefinitions>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="36"/>
+ <RowDefinition Height="36"/>
+ <RowDefinition Height="36"/>
+ </Grid.RowDefinitions>
+
+ <TextBlock Grid.Row="0" Grid.Column="0" Text="璁惧ID" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
+ <TextBox Grid.Row="0" Grid.Column="1" x:Name="tbDeviceId" VerticalAlignment="Center"
+ Style="{StaticResource EditorTextBoxStyle}" IsReadOnly="True" Margin="4,0"/>
+
+ <TextBlock Grid.Row="0" Grid.Column="2" Text="璁惧绫诲瀷" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
+ <TextBox Grid.Row="0" Grid.Column="3" x:Name="tbKind" VerticalAlignment="Center"
+ Style="{StaticResource EditorTextBoxStyle}" IsReadOnly="True" Margin="4,0"/>
+
+ <TextBlock Grid.Row="1" Grid.Column="0" Text="椹卞姩绫诲瀷" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
+ <TextBox Grid.Row="1" Grid.Column="1" x:Name="tbDriverType" VerticalAlignment="Center"
+ Style="{StaticResource EditorTextBoxStyle}" IsReadOnly="True" Margin="4,0"/>
+
+ <TextBlock Grid.Row="1" Grid.Column="2" Text="浼犺緭鏂瑰紡" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
+ <TextBox Grid.Row="1" Grid.Column="3" x:Name="tbTransport" VerticalAlignment="Center"
+ Style="{StaticResource EditorTextBoxStyle}" IsReadOnly="True" Margin="4,0"/>
+
+ <TextBlock Grid.Row="2" Grid.Column="0" Text="杩炴帴绔偣" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
+ <TextBox Grid.Row="2" Grid.Column="1" x:Name="tbEndpoint" VerticalAlignment="Center"
+ Style="{StaticResource EditorTextBoxStyle}" IsReadOnly="True" Margin="4,0"/>
+
+ <TextBlock Grid.Row="2" Grid.Column="2" Text="鐢熸晥鐗堟湰" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
+ <TextBox Grid.Row="2" Grid.Column="3" x:Name="tbEffectiveVersion" VerticalAlignment="Center"
+ Style="{StaticResource EditorTextBoxStyle}" IsReadOnly="True" Margin="4,0"/>
+ </Grid>
+ </GroupBox>
+
+ <!-- 閫氶亾鏄犲皠琛� -->
+ <Grid Grid.Row="1" Margin="6">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <TextBlock Grid.Row="0" Text="閫氶亾鍒楄〃" FontWeight="SemiBold" Margin="0,0,0,4"/>
+ <ListView Grid.Row="1" Style="{StaticResource DefaultListTable}" x:Name="channelListView"
+ ItemsSource="{Binding Channels}"
+ VirtualizingPanel.IsVirtualizing="True"
+ VirtualizingPanel.VirtualizationMode="Standard">
+ <ListView.View>
+ <GridView AllowsColumnReorder="False">
+ <GridViewColumn Width="50" Header="#">
+ <GridViewColumn.CellTemplate>
+ <DataTemplate>
+ <Border Style="{StaticResource CellBorder}">
+ <TextBlock Style="{StaticResource ListTableTextBlock}"
+ Text="{Binding Converter={StaticResource lvRowNumber},
+ RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListViewItem,AncestorLevel=1}}"/>
+ </Border>
+ </DataTemplate>
+ </GridViewColumn.CellTemplate>
+ </GridViewColumn>
+ <GridViewColumn Width="150" Header="DeviceId">
+ <GridViewColumn.CellTemplate>
+ <DataTemplate>
+ <Border Style="{StaticResource CellBorder}">
+ <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding DeviceId}"/>
+ </Border>
+ </DataTemplate>
+ </GridViewColumn.CellTemplate>
+ </GridViewColumn>
+ <GridViewColumn Width="80" Header="ChannelId">
+ <GridViewColumn.CellTemplate>
+ <DataTemplate>
+ <Border Style="{StaticResource CellBorder}">
+ <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding ChannelId}"/>
+ </Border>
+ </DataTemplate>
+ </GridViewColumn.CellTemplate>
+ </GridViewColumn>
+ <GridViewColumn Width="200" Header="Capability">
+ <GridViewColumn.CellTemplate>
+ <DataTemplate>
+ <Border Style="{StaticResource CellBorder}">
+ <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding Capability}"/>
+ </Border>
+ </DataTemplate>
+ </GridViewColumn.CellTemplate>
+ </GridViewColumn>
+ <GridViewColumn Width="100" Header="MaxVoltage">
+ <GridViewColumn.CellTemplate>
+ <DataTemplate>
+ <Border Style="{StaticResource CellBorder}">
+ <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding MaxVoltage, StringFormat=F2}"/>
+ </Border>
+ </DataTemplate>
+ </GridViewColumn.CellTemplate>
+ </GridViewColumn>
+ <GridViewColumn Width="100" Header="MaxCurrent">
+ <GridViewColumn.CellTemplate>
+ <DataTemplate>
+ <Border Style="{StaticResource CellBorder}">
+ <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding MaxCurrent, StringFormat=F2}"/>
+ </Border>
+ </DataTemplate>
+ </GridViewColumn.CellTemplate>
+ </GridViewColumn>
+ </GridView>
+ </ListView.View>
+ </ListView>
+ </Grid>
+ </Grid>
+ </Border>
+
+ <!-- 鍙虫爮锛歋lot鏄犲皠琛� -->
+ <Border Grid.Column="2" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1" CornerRadius="4" Margin="4,0,0,0">
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+ <TextBlock Grid.Row="0" Text="Slot 鏄犲皠" FontWeight="SemiBold" Margin="6"/>
+ <ListView Grid.Row="1" Style="{StaticResource DefaultListTable}" x:Name="slotListView"
+ ItemsSource="{Binding SlotMappings}"
+ VirtualizingPanel.IsVirtualizing="True"
+ VirtualizingPanel.VirtualizationMode="Standard"
+ Margin="4">
+ <ListView.View>
+ <GridView AllowsColumnReorder="False">
+ <GridViewColumn Width="80" Header="SlotId">
+ <GridViewColumn.CellTemplate>
+ <DataTemplate>
+ <Border Style="{StaticResource CellBorder}">
+ <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding SlotId}"/>
+ </Border>
+ </DataTemplate>
+ </GridViewColumn.CellTemplate>
+ </GridViewColumn>
+ <GridViewColumn Width="80" Header="Capability">
+ <GridViewColumn.CellTemplate>
+ <DataTemplate>
+ <Border Style="{StaticResource CellBorder}">
+ <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding Capability}"/>
+ </Border>
+ </DataTemplate>
+ </GridViewColumn.CellTemplate>
+ </GridViewColumn>
+ <GridViewColumn Width="100" Header="DeviceId">
+ <GridViewColumn.CellTemplate>
+ <DataTemplate>
+ <Border Style="{StaticResource CellBorder}">
+ <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding DeviceId}"/>
+ </Border>
+ </DataTemplate>
+ </GridViewColumn.CellTemplate>
+ </GridViewColumn>
+ <GridViewColumn Width="60" Header="ChId">
+ <GridViewColumn.CellTemplate>
+ <DataTemplate>
+ <Border Style="{StaticResource CellBorder}">
+ <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding ChannelId}"/>
+ </Border>
+ </DataTemplate>
+ </GridViewColumn.CellTemplate>
+ </GridViewColumn>
+ <GridViewColumn Width="80" Header="MapVer">
+ <GridViewColumn.CellTemplate>
+ <DataTemplate>
+ <Border Style="{StaticResource CellBorder}">
+ <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding MappingVersion}"/>
+ </Border>
+ </DataTemplate>
+ </GridViewColumn.CellTemplate>
+ </GridViewColumn>
+ </GridView>
+ </ListView.View>
+ </ListView>
+ </Grid>
+ </Border>
+ </Grid>
+
+ <!-- 搴曢儴鐘舵�佹爮 -->
+ <DockPanel Grid.Row="2" Margin="0,4,0,0">
+ <StackPanel DockPanel.Dock="Left" Orientation="Horizontal" VerticalAlignment="Center" dp:StackPanelHelper.ChildSpace="6">
+ <TextBlock Text="褰撳墠鐗堟湰鐘舵�侊細" FontWeight="SemiBold" VerticalAlignment="Center"/>
+ <Border Background="{DynamicResource SecondPrimaryColor}" CornerRadius="3" Padding="8,2">
+ <TextBlock x:Name="tbVersionStatus" Text="{Binding CurrentVersionStatus}" Foreground="White" FontWeight="Bold"/>
+ </Border>
+ </StackPanel>
+ <StackPanel DockPanel.Dock="Right" Orientation="Horizontal" HorizontalAlignment="Right" dp:StackPanelHelper.ChildSpace="10">
+ <Button x:Name="saveDraftBtn" Click="Button_Click" Content="淇濆瓨鑽夌"
+ Style="{StaticResource RfhBtn}" Width="90"/>
+ <Button x:Name="publishBtn" Click="Button_Click" Content="鍙戝竷"
+ Style="{StaticResource AddBtn}" Width="70"/>
+ <Button x:Name="applyBtn" Click="Button_Click" Content="搴旂敤"
+ Style="{StaticResource AddBtn}" Width="70"/>
+ </StackPanel>
+ </DockPanel>
+ </Grid>
+</hb:SimpleMaskControl>
--
Gitblit v1.9.1