<pu:WindowX x:Class="Plugin.DeviceConfig.DeviceEditModal"
|
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: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"
|
Title="设备编辑"
|
SizeToContent="Height"
|
Width="720"
|
WindowStartupLocation="CenterOwner"
|
Style="{StaticResource ModalWindow}">
|
<pu:WindowX.Resources>
|
<ResourceDictionary>
|
<ResourceDictionary.MergedDictionaries>
|
<ResourceDictionary Source="/HMI.UI;component/Style/PanuonListView.xaml"/>
|
</ResourceDictionary.MergedDictionaries>
|
</ResourceDictionary>
|
</pu:WindowX.Resources>
|
|
<Grid Margin="16">
|
<Grid.RowDefinitions>
|
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
</Grid.RowDefinitions>
|
|
<!-- 设备基本信息 -->
|
<GroupBox Grid.Row="0" Header="设备信息" FontWeight="SemiBold" Margin="0,0,0,12">
|
<Grid Margin="8">
|
<Grid.ColumnDefinitions>
|
<ColumnDefinition Width="100"/>
|
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="100"/>
|
<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}" Margin="4,0"/>
|
|
<TextBlock Grid.Row="0" Grid.Column="2" Text="设备类型 *" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
|
<ComboBox Grid.Row="0" Grid.Column="3" x:Name="cbKind" VerticalAlignment="Center" 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}" Margin="4,0"/>
|
|
<TextBlock Grid.Row="1" Grid.Column="2" Text="传输方式 *" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
|
<ComboBox Grid.Row="1" Grid.Column="3" x:Name="cbTransport" VerticalAlignment="Center" Margin="4,0"/>
|
|
<TextBlock Grid.Row="2" Grid.Column="0" Text="连接端点 *" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
|
<TextBox Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3" x:Name="tbEndpoint" VerticalAlignment="Center"
|
Style="{StaticResource EditorTextBoxStyle}" Margin="4,0"
|
pu:TextBoxHelper.Watermark="例: 192.168.10.124:30000 或 COM3"/>
|
</Grid>
|
</GroupBox>
|
|
<!-- 执行位置(V3.0 §05) -->
|
<GroupBox Grid.Row="1" Header="执行位置" FontWeight="SemiBold" Margin="0,0,0,12">
|
<Grid Margin="8">
|
<Grid.ColumnDefinitions>
|
<ColumnDefinition Width="100"/>
|
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="100"/>
|
<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="执行模式 *" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
|
<StackPanel Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="3" Orientation="Horizontal" VerticalAlignment="Center"
|
dp:StackPanelHelper.ChildSpace="16" Margin="4,0">
|
<RadioButton x:Name="rbLocal" Content="本地仪器 (Local 直连)" GroupName="ExecMode" IsChecked="True"
|
Checked="ExecMode_Changed" VerticalAlignment="Center"/>
|
<RadioButton x:Name="rbBroker" Content="共享仪器 (Broker 代理)" GroupName="ExecMode"
|
Checked="ExecMode_Changed" VerticalAlignment="Center"/>
|
</StackPanel>
|
|
<TextBlock Grid.Row="1" Grid.Column="0" Text="仲裁域 *" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
|
<ComboBox Grid.Row="1" Grid.Column="1" x:Name="cbAuthority" VerticalAlignment="Center" Margin="4,0"
|
SelectionChanged="CbAuthority_SelectionChanged"/>
|
|
<TextBlock Grid.Row="1" Grid.Column="2" Text="访问策略" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
|
<TextBox Grid.Row="1" Grid.Column="3" x:Name="tbAccessPolicy" VerticalAlignment="Center" IsReadOnly="True"
|
Style="{StaticResource EditorTextBoxStyle}" Margin="4,0"/>
|
|
<!-- Broker 模式专属字段:默认隐藏 -->
|
<Grid Grid.Row="2" Grid.ColumnSpan="4" x:Name="spBroker" Visibility="Collapsed">
|
<Grid.ColumnDefinitions>
|
<ColumnDefinition Width="100"/>
|
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="100"/>
|
<ColumnDefinition Width="*"/>
|
</Grid.ColumnDefinitions>
|
<Grid.RowDefinitions>
|
<RowDefinition Height="36"/>
|
<RowDefinition Height="36"/>
|
</Grid.RowDefinitions>
|
|
<TextBlock Grid.Row="0" Grid.Column="0" Text="BrokerId *" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
|
<ComboBox Grid.Row="0" Grid.Column="1" x:Name="cbBrokerId" VerticalAlignment="Center" 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="tbOwnerProcessId" VerticalAlignment="Center" IsReadOnly="True"
|
Style="{StaticResource EditorTextBoxStyle}" Margin="4,0"
|
pu:TextBoxHelper.Watermark="Broker 宿主 PID(MVP 占位当前进程)"/>
|
|
<TextBlock Grid.Row="1" Grid.Column="0" Text="物理会话键 *" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
|
<ComboBox Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" x:Name="cbSessionKey" VerticalAlignment="Center"
|
IsEditable="True" Margin="4,0"
|
pu:TextBoxHelper.Watermark="由端点规范化的固定字符串,如 can/CAN_BUS_1/main"/>
|
</Grid>
|
</Grid>
|
</GroupBox>
|
|
<!-- 通道列表 -->
|
<GroupBox Grid.Row="2" Header="通道列表" FontWeight="SemiBold" Margin="0,0,0,12">
|
<Grid Margin="8">
|
<Grid.RowDefinitions>
|
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="180"/>
|
<RowDefinition Height="Auto"/>
|
</Grid.RowDefinitions>
|
|
<StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,0,0,4"
|
dp:StackPanelHelper.ChildSpace="8">
|
<Button x:Name="addChannelBtn" Click="AddChannel_Click" Content="+ 新增通道"
|
Style="{StaticResource AddBtn}" Width="100"/>
|
<Button x:Name="delChannelBtn" Click="DelChannel_Click" Content="删除通道"
|
Style="{StaticResource DelBtn}" Width="100"/>
|
</StackPanel>
|
|
<ListView Grid.Row="1" Style="{StaticResource DefaultListTable}" x:Name="channelListView"
|
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="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>
|
<GridViewColumn Width="100" Header="操作">
|
<GridViewColumn.CellTemplate>
|
<DataTemplate>
|
<StackPanel Orientation="Horizontal" dp:StackPanelHelper.ChildSpace="6">
|
<Button x:Name="editChBtn" Style="{StaticResource EditLink}" Click="EditChannel_Click" Tag="{Binding}"/>
|
<Button x:Name="delChBtn" Style="{StaticResource DeleteLink}" Click="DeleteChannel_Click" Tag="{Binding}"/>
|
</StackPanel>
|
</DataTemplate>
|
</GridViewColumn.CellTemplate>
|
</GridViewColumn>
|
</GridView>
|
</ListView.View>
|
</ListView>
|
|
<!-- 通道编辑行 -->
|
<Grid Grid.Row="2" Margin="0,6,0,0">
|
<Grid.ColumnDefinitions>
|
<ColumnDefinition Width="80"/>
|
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="100"/>
|
<ColumnDefinition Width="100"/>
|
<ColumnDefinition Width="80"/>
|
</Grid.ColumnDefinitions>
|
<TextBox Grid.Column="0" x:Name="tbChId" Style="{StaticResource EditorTextBoxStyle}"
|
pu:TextBoxHelper.Watermark="编号" Margin="0,0,4,0"/>
|
<TextBox Grid.Column="1" x:Name="tbChCap" Style="{StaticResource EditorTextBoxStyle}"
|
pu:TextBoxHelper.Watermark="能力描述" Margin="0,0,4,0"/>
|
<TextBox Grid.Column="2" x:Name="tbChVolt" Style="{StaticResource EditorTextBoxStyle}"
|
pu:TextBoxHelper.Watermark="最大电压" Margin="0,0,4,0"/>
|
<TextBox Grid.Column="3" x:Name="tbChCurr" Style="{StaticResource EditorTextBoxStyle}"
|
pu:TextBoxHelper.Watermark="最大电流" Margin="0,0,4,0"/>
|
<Button Grid.Column="4" x:Name="saveChBtn" Click="SaveChannel_Click" Content="保存"
|
Style="{StaticResource AddBtn}" Width="70"/>
|
</Grid>
|
</Grid>
|
</GroupBox>
|
|
<!-- 底部按钮 -->
|
<StackPanel Grid.Row="4" Orientation="Horizontal" HorizontalAlignment="Right" dp:StackPanelHelper.ChildSpace="10" Margin="0,12,0,0">
|
<Button x:Name="saveBtn" Click="SaveBtn_Click" Content="保存"
|
Style="{StaticResource AddBtn}" Width="90"/>
|
<Button x:Name="cancelBtn" Click="CancelBtn_Click" Content="取消"
|
Style="{StaticResource RfhBtn}" Width="90"/>
|
</StackPanel>
|
</Grid>
|
</pu:WindowX>
|