<pu:WindowX x:Class="Plugin.DeviceConfig.BatchGenerateModal"
|
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="780"
|
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"/>
|
</Grid.RowDefinitions>
|
|
<!-- 参数输入区 -->
|
<GroupBox Grid.Row="0" Header="生成参数" FontWeight="SemiBold" Margin="0,0,0,12">
|
<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"/>
|
<RowDefinition Height="36"/>
|
<RowDefinition Height="36"/>
|
</Grid.RowDefinitions>
|
|
<TextBlock Grid.Row="0" Grid.Column="0" Text="设备类型 *" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
|
<ComboBox Grid.Row="0" Grid.Column="1" x:Name="cbDeviceType" 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="tbDriverType" VerticalAlignment="Center"
|
Style="{StaticResource EditorTextBoxStyle}" Margin="4,0"/>
|
|
<TextBlock Grid.Row="1" Grid.Column="0" Text="传输方式 *" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
|
<ComboBox Grid.Row="1" Grid.Column="1" x:Name="cbTransport" VerticalAlignment="Center" Margin="4,0"/>
|
|
<TextBlock Grid.Row="1" Grid.Column="2" Text="设备数量 *" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
|
<pu:NumberInput Grid.Row="1" Grid.Column="3" x:Name="niDeviceCount" VerticalAlignment="Center"
|
Style="{StaticResource FormNumberInput}" Margin="4,0" Minimum="1" Maximum="100" Value="1"/>
|
|
<TextBlock Grid.Row="2" Grid.Column="0" Text="每设备通道数" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
|
<pu:NumberInput Grid.Row="2" Grid.Column="1" x:Name="niChannelsPerDevice" VerticalAlignment="Center"
|
Style="{StaticResource FormNumberInput}" Margin="4,0" Minimum="0" Maximum="64" Value="1"/>
|
|
<TextBlock Grid.Row="2" Grid.Column="2" Text="起始端口号" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
|
<pu:NumberInput Grid.Row="2" Grid.Column="3" x:Name="niStartPort" VerticalAlignment="Center"
|
Style="{StaticResource FormNumberInput}" Margin="4,0" Minimum="1" Maximum="65535" Value="30000"/>
|
|
<TextBlock Grid.Row="3" Grid.Column="0" Text="地址生成规则" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
|
<TextBox Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="3" x:Name="tbAddressRule" VerticalAlignment="Center"
|
Style="{StaticResource EditorTextBoxStyle}" Margin="4,0"
|
pu:TextBoxHelper.Watermark="例: 192.168.10.{0},{0}为序号占位符"/>
|
|
<TextBlock Grid.Row="4" Grid.Column="0" Text="Slot映射起点" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
|
<TextBox Grid.Row="4" Grid.Column="1" x:Name="tbSlotStart" VerticalAlignment="Center"
|
Style="{StaticResource EditorTextBoxStyle}" Margin="4,0"
|
pu:TextBoxHelper.Watermark="例: Slot001"/>
|
|
<TextBlock Grid.Row="4" Grid.Column="2" Text="设备ID前缀" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
|
<TextBox Grid.Row="4" Grid.Column="3" x:Name="tbDeviceIdPrefix" VerticalAlignment="Center"
|
Style="{StaticResource EditorTextBoxStyle}" Margin="4,0"
|
pu:TextBoxHelper.Watermark="例: PSU"/>
|
</Grid>
|
</GroupBox>
|
|
<!-- 预览区 -->
|
<GroupBox Grid.Row="1" Header="生成预览" FontWeight="SemiBold" Margin="0,0,0,12">
|
<Grid Margin="8">
|
<Grid.RowDefinitions>
|
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="200"/>
|
</Grid.RowDefinitions>
|
|
<TextBlock Grid.Row="0" x:Name="tbConflictMsg" Foreground="Red" Margin="0,0,0,4"
|
TextWrapping="Wrap" Visibility="Collapsed"/>
|
|
<ListView Grid.Row="1" Style="{StaticResource DefaultListTable}" x:Name="previewListView"
|
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="140" Header="DeviceId">
|
<GridViewColumn.CellTemplate>
|
<DataTemplate>
|
<Border Style="{StaticResource CellBorder}">
|
<TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding DeviceId}"/>
|
</Border>
|
</DataTemplate>
|
</GridViewColumn.CellTemplate>
|
</GridViewColumn>
|
<GridViewColumn Width="100" Header="Kind">
|
<GridViewColumn.CellTemplate>
|
<DataTemplate>
|
<Border Style="{StaticResource CellBorder}">
|
<TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding Kind}"/>
|
</Border>
|
</DataTemplate>
|
</GridViewColumn.CellTemplate>
|
</GridViewColumn>
|
<GridViewColumn Width="180" Header="Endpoint">
|
<GridViewColumn.CellTemplate>
|
<DataTemplate>
|
<Border Style="{StaticResource CellBorder}">
|
<TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding Endpoint}"/>
|
</Border>
|
</DataTemplate>
|
</GridViewColumn.CellTemplate>
|
</GridViewColumn>
|
<GridViewColumn Width="80" Header="通道数">
|
<GridViewColumn.CellTemplate>
|
<DataTemplate>
|
<Border Style="{StaticResource CellBorder}">
|
<TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding ChannelCount}"/>
|
</Border>
|
</DataTemplate>
|
</GridViewColumn.CellTemplate>
|
</GridViewColumn>
|
<GridViewColumn Width="100" Header="Slot起点">
|
<GridViewColumn.CellTemplate>
|
<DataTemplate>
|
<Border Style="{StaticResource CellBorder}">
|
<TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding SlotStart}"/>
|
</Border>
|
</DataTemplate>
|
</GridViewColumn.CellTemplate>
|
</GridViewColumn>
|
</GridView>
|
</ListView.View>
|
</ListView>
|
</Grid>
|
</GroupBox>
|
|
<!-- 底部按钮 -->
|
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Right" dp:StackPanelHelper.ChildSpace="10" Margin="0,12,0,0">
|
<Button x:Name="previewBtn" Click="PreviewBtn_Click" Content="生成预览"
|
Style="{StaticResource RfhBtn}" Width="90"/>
|
<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>
|