Files
DMS/DMS.WPF/Views/Dialogs/VariableDialog.xaml

193 lines
9.0 KiB
Plaintext
Raw Normal View History

2025-08-24 12:25:44 +08:00
<ui:ContentDialog
x:Class="DMS.WPF.Views.Dialogs.VariableDialog"
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:en="clr-namespace:DMS.Core.Enums;assembly=DMS.Core"
xmlns:enums="clr-namespace:DMS.Core.Enums;assembly=DMS.Core"
xmlns:ex="clr-namespace:DMS.Extensions"
xmlns:hc="https://handyorg.github.io/handycontrol"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern"
xmlns:valueConverts="clr-namespace:DMS.WPF.ValueConverts"
xmlns:vmd="clr-namespace:DMS.WPF.ViewModels.Dialogs"
Title="{Binding Title}"
d:DataContext="{d:DesignInstance vmd:VariableDialogViewModel}"
CloseButtonCommand="{Binding CancleButtonCommand}"
CloseButtonText="取消"
DefaultButton="Primary"
PrimaryButtonCommand="{Binding PrimaryButtonCommand}"
PrimaryButtonText="{Binding PrimaryButText}"
mc:Ignorable="d">
2025-07-03 12:55:00 +08:00
<ui:ContentDialog.Resources>
<valueConverts:EnumDescriptionConverter x:Key="EnumDescriptionConverter" />
2025-08-24 12:25:44 +08:00
<ex:EnumBindingSource x:Key="ProtocolType" EnumType="{x:Type en:ProtocolType}" />
<ex:EnumBindingSource x:Key="SignalType" EnumType="{x:Type enums:SignalType}" />
<ex:EnumBindingSource x:Key="PollLevelType" EnumType="{x:Type enums:PollLevelType}" />
2025-07-03 12:55:00 +08:00
</ui:ContentDialog.Resources>
2025-08-24 12:25:44 +08:00
<ScrollViewer VerticalScrollBarVisibility="Auto">
<StackPanel Margin="16">
<!-- 基本信息 -->
<GroupBox Margin="0,0,0,15" Header="基本信息">
<Grid Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="20" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<hc:TextBox
Grid.Row="0"
Grid.Column="0"
MinWidth="150"
hc:InfoElement.Title="变量名称:"
Text="{Binding Variable.Name, UpdateSourceTrigger=PropertyChanged}" />
<hc:TextBox
Grid.Row="0"
Grid.Column="2"
MinWidth="150"
hc:InfoElement.Title="节点ID:"
Text="{Binding Variable.OpcUaNodeId, UpdateSourceTrigger=PropertyChanged}" />
<hc:ComboBox
Grid.Row="1"
Grid.Column="0"
Margin="0,15,0,0"
hc:InfoElement.Title="协议类型:"
ItemsSource="{Binding Source={StaticResource ProtocolType}}"
SelectedItem="{Binding Variable.Protocol, UpdateSourceTrigger=PropertyChanged}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={StaticResource EnumDescriptionConverter}}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</hc:ComboBox>
<hc:ComboBox
Grid.Row="1"
Grid.Column="2"
Margin="0,15,0,0"
hc:InfoElement.Title="信号类型:"
ItemsSource="{Binding Source={StaticResource SignalType}}"
SelectedItem="{Binding Variable.SignalType, UpdateSourceTrigger=PropertyChanged}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={StaticResource EnumDescriptionConverter}}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</hc:ComboBox>
<hc:ComboBox
Grid.Row="2"
Grid.Column="0"
Margin="0,15,0,0"
hc:InfoElement.Title="轮询级别:"
ItemsSource="{Binding Source={StaticResource PollLevelType}}"
SelectedItem="{Binding Variable.PollLevel, UpdateSourceTrigger=PropertyChanged}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={StaticResource EnumDescriptionConverter}}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</hc:ComboBox>
<hc:TextBox
Grid.Row="2"
Grid.Column="2"
Margin="0,15,0,0"
hc:InfoElement.Title="数据类型:"
Text="{Binding Variable.CSharpDataType, UpdateSourceTrigger=PropertyChanged}" />
<hc:TextBox
Grid.Row="3"
Grid.Column="0"
Grid.ColumnSpan="3"
Height="60"
Margin="0,15,0,0"
hc:InfoElement.Title="变量描述:"
Text="{Binding Variable.Description, UpdateSourceTrigger=PropertyChanged}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</Grid>
2025-07-03 12:55:00 +08:00
</GroupBox>
2025-08-24 12:25:44 +08:00
<!-- 保存设置 -->
<GroupBox Margin="0,0,0,15" Header="保存设置">
<Grid Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="20" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<hc:TextBox
Grid.Row="0"
Grid.Column="0"
hc:InfoElement.Title="保存范围:"
Text="{Binding Variable.HistoryDeadband, UpdateSourceTrigger=PropertyChanged}" />
<StackPanel
Grid.Row="0"
Grid.Column="2"
VerticalAlignment="Bottom"
Orientation="Horizontal">
<CheckBox
Margin="0,0,20,0"
Content="是否激活"
IsChecked="{Binding Variable.IsActive, UpdateSourceTrigger=PropertyChanged}" />
<CheckBox Content="是否保存" IsChecked="{Binding Variable.IsHistoryEnabled, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
</Grid>
2025-07-03 12:55:00 +08:00
</GroupBox>
2025-08-23 16:01:30 +08:00
2025-08-24 12:25:44 +08:00
<!-- 报警设置 -->
<GroupBox Header="报警设置">
<Grid Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="20" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<hc:TextBox
Grid.Row="0"
Grid.Column="0"
hc:InfoElement.Title="报警最小值:"
Text="{Binding Variable.AlarmMinValue, UpdateSourceTrigger=PropertyChanged}" />
<hc:TextBox
Grid.Row="0"
Grid.Column="2"
hc:InfoElement.Title="报警最大值:"
Text="{Binding Variable.AlarmMaxValue, UpdateSourceTrigger=PropertyChanged}" />
<CheckBox
Grid.Row="1"
Grid.Column="0"
Grid.ColumnSpan="3"
Margin="0,15,0,0"
Content="是否报警"
IsChecked="{Binding Variable.IsAlarmEnabled, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</GroupBox>
</StackPanel>
</ScrollViewer>
2025-07-03 12:55:00 +08:00
</ui:ContentDialog>