<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>
|
|
<!-- 右栏:Slot映射表 -->
|
<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>
|