修改了变量对话框的界面
This commit is contained in:
@@ -66,14 +66,14 @@ public partial class VariableItemViewModel : ObservableObject
|
|||||||
/// 获取或设置变量的信号类型 (如:AI, DI, AO, DO)。
|
/// 获取或设置变量的信号类型 (如:AI, DI, AO, DO)。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ObservableProperty]
|
[ObservableProperty]
|
||||||
private SignalType _signalType ;
|
private SignalType _signalType =SignalType.OtherASignal;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取或设置变量的轮询等级。
|
/// 获取或设置变量的轮询等级。
|
||||||
/// 用于决定数据采集的频率(如:高、中、低)。
|
/// 用于决定数据采集的频率(如:高、中、低)。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ObservableProperty]
|
[ObservableProperty]
|
||||||
private PollLevelType _pollLevel;
|
private PollLevelType _pollLevel=PollLevelType.ThirtySeconds;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取或设置一个值,该值指示此变量是否被激活。
|
/// 获取或设置一个值,该值指示此变量是否被激活。
|
||||||
|
|||||||
@@ -1,131 +1,193 @@
|
|||||||
<ui:ContentDialog x:Class="DMS.WPF.Views.Dialogs.VariableDialog"
|
<ui:ContentDialog
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
x:Class="DMS.WPF.Views.Dialogs.VariableDialog"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
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:ikw="http://schemas.inkore.net/lib/ui/wpf"
|
xmlns:en="clr-namespace:DMS.Core.Enums;assembly=DMS.Core"
|
||||||
xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern"
|
xmlns:enums="clr-namespace:DMS.Core.Enums;assembly=DMS.Core"
|
||||||
xmlns:vmd="clr-namespace:DMS.WPF.ViewModels.Dialogs"
|
xmlns:ex="clr-namespace:DMS.Extensions"
|
||||||
xmlns:ex="clr-namespace:DMS.Extensions"
|
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||||
xmlns:en="clr-namespace:DMS.Core.Enums;assembly=DMS.Core"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:enums="clr-namespace:DMS.Core.Enums;assembly=DMS.Core"
|
xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern"
|
||||||
xmlns:valueConverts="clr-namespace:DMS.WPF.ValueConverts"
|
xmlns:valueConverts="clr-namespace:DMS.WPF.ValueConverts"
|
||||||
Title="{Binding Title}"
|
xmlns:vmd="clr-namespace:DMS.WPF.ViewModels.Dialogs"
|
||||||
CloseButtonText="取消"
|
Title="{Binding Title}"
|
||||||
DefaultButton="Primary"
|
d:DataContext="{d:DesignInstance vmd:VariableDialogViewModel}"
|
||||||
PrimaryButtonText="{Binding PrimaryButText}"
|
CloseButtonCommand="{Binding CancleButtonCommand}"
|
||||||
PrimaryButtonCommand="{Binding PrimaryButtonCommand}"
|
CloseButtonText="取消"
|
||||||
CloseButtonCommand="{Binding CancleButtonCommand}"
|
DefaultButton="Primary"
|
||||||
Background="#fff"
|
PrimaryButtonCommand="{Binding PrimaryButtonCommand}"
|
||||||
d:DataContext="{d:DesignInstance vmd:VariableDialogViewModel}"
|
PrimaryButtonText="{Binding PrimaryButText}"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
|
||||||
<ui:ContentDialog.Resources>
|
<ui:ContentDialog.Resources>
|
||||||
<valueConverts:EnumDescriptionConverter x:Key="EnumDescriptionConverter" />
|
<valueConverts:EnumDescriptionConverter x:Key="EnumDescriptionConverter" />
|
||||||
|
<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}" />
|
||||||
</ui:ContentDialog.Resources>
|
</ui:ContentDialog.Resources>
|
||||||
|
|
||||||
<Grid >
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||||
|
<StackPanel Margin="16">
|
||||||
<Grid.ColumnDefinitions>
|
<!-- 基本信息 -->
|
||||||
<ColumnDefinition Width="*" />
|
<GroupBox Margin="0,0,0,15" Header="基本信息">
|
||||||
<ColumnDefinition Width="*" />
|
<Grid Margin="10">
|
||||||
</Grid.ColumnDefinitions>
|
<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
|
||||||
<GroupBox Header="基本信息" Grid.Row="0" Grid.Column="0" Margin="0 0 10 10">
|
Grid.Row="0"
|
||||||
<ikw:SimpleStackPanel Margin="10" Spacing="12">
|
Grid.Column="0"
|
||||||
<TextBlock Text="变量名称"
|
MinWidth="150"
|
||||||
Style="{StaticResource TextBlockSubTitle}" />
|
hc:InfoElement.Title="变量名称:"
|
||||||
<TextBox Width="200" Text="{Binding Variable.Name, UpdateSourceTrigger=PropertyChanged}" />
|
Text="{Binding Variable.Name, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
|
|
||||||
<TextBlock Text="变量描述"
|
<hc:TextBox
|
||||||
Style="{StaticResource TextBlockSubTitle}" />
|
Grid.Row="0"
|
||||||
<TextBox AcceptsReturn="True"
|
Grid.Column="2"
|
||||||
Text="{Binding Variable.Description, UpdateSourceTrigger=PropertyChanged}" />
|
MinWidth="150"
|
||||||
|
hc:InfoElement.Title="节点ID:"
|
||||||
|
Text="{Binding Variable.OpcUaNodeId, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
|
|
||||||
<TextBlock Text="节点ID"
|
<hc:ComboBox
|
||||||
Style="{StaticResource TextBlockSubTitle}" />
|
Grid.Row="1"
|
||||||
<TextBox Text="{Binding Variable.OpcUaNodeId, UpdateSourceTrigger=PropertyChanged}" />
|
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>
|
||||||
|
|
||||||
<TextBlock Text="协议类型"
|
<hc:ComboBox
|
||||||
Style="{StaticResource TextBlockSubTitle}" />
|
Grid.Row="1"
|
||||||
<ComboBox SelectedValue="{Binding Variable.Protocol, UpdateSourceTrigger=PropertyChanged}"
|
Grid.Column="2"
|
||||||
SelectedValuePath="Tag"
|
Margin="0,15,0,0"
|
||||||
ItemsSource="{ex:EnumBindingSource {x:Type en:ProtocolType}}">
|
hc:InfoElement.Title="信号类型:"
|
||||||
<ComboBox.ItemTemplate>
|
ItemsSource="{Binding Source={StaticResource SignalType}}"
|
||||||
<DataTemplate>
|
SelectedItem="{Binding Variable.SignalType, UpdateSourceTrigger=PropertyChanged}">
|
||||||
<TextBlock Text="{Binding Converter={StaticResource EnumDescriptionConverter}}" />
|
<ComboBox.ItemTemplate>
|
||||||
</DataTemplate>
|
<DataTemplate>
|
||||||
</ComboBox.ItemTemplate>
|
<TextBlock Text="{Binding Converter={StaticResource EnumDescriptionConverter}}" />
|
||||||
</ComboBox>
|
</DataTemplate>
|
||||||
|
</ComboBox.ItemTemplate>
|
||||||
|
</hc:ComboBox>
|
||||||
|
|
||||||
<TextBlock Text="数据类型"
|
<hc:ComboBox
|
||||||
Style="{StaticResource TextBlockSubTitle}" />
|
Grid.Row="2"
|
||||||
<TextBox Text="{Binding Variable.CSharpDataType, UpdateSourceTrigger=PropertyChanged}" />
|
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>
|
||||||
|
|
||||||
<TextBlock Text="信号类型"
|
<hc:TextBox
|
||||||
Style="{StaticResource TextBlockSubTitle}" />
|
Grid.Row="2"
|
||||||
<ComboBox SelectedValue="{Binding Variable.SignalType, UpdateSourceTrigger=PropertyChanged}"
|
Grid.Column="2"
|
||||||
SelectedValuePath="Tag"
|
Margin="0,15,0,0"
|
||||||
ItemsSource="{ex:EnumBindingSource {x:Type enums:SignalType}}">
|
hc:InfoElement.Title="数据类型:"
|
||||||
<ComboBox.ItemTemplate>
|
Text="{Binding Variable.CSharpDataType, UpdateSourceTrigger=PropertyChanged}" />
|
||||||
<DataTemplate>
|
|
||||||
<TextBlock Text="{Binding Converter={StaticResource EnumDescriptionConverter}}" />
|
|
||||||
</DataTemplate>
|
|
||||||
</ComboBox.ItemTemplate>
|
|
||||||
</ComboBox>
|
|
||||||
|
|
||||||
<TextBlock Text="轮询级别"
|
<hc:TextBox
|
||||||
Style="{StaticResource TextBlockSubTitle}" />
|
Grid.Row="3"
|
||||||
<ComboBox SelectedValue="{Binding Variable.PollLevel, UpdateSourceTrigger=PropertyChanged}"
|
Grid.Column="0"
|
||||||
SelectedValuePath="Tag"
|
Grid.ColumnSpan="3"
|
||||||
ItemsSource="{ex:EnumBindingSource {x:Type enums:PollLevelType}}">
|
Height="60"
|
||||||
<ComboBox.ItemTemplate>
|
Margin="0,15,0,0"
|
||||||
<DataTemplate>
|
hc:InfoElement.Title="变量描述:"
|
||||||
<TextBlock Text="{Binding Converter={StaticResource EnumDescriptionConverter}}" />
|
Text="{Binding Variable.Description, UpdateSourceTrigger=PropertyChanged}"
|
||||||
</DataTemplate>
|
TextWrapping="Wrap"
|
||||||
</ComboBox.ItemTemplate>
|
VerticalScrollBarVisibility="Auto" />
|
||||||
</ComboBox>
|
</Grid>
|
||||||
</ikw:SimpleStackPanel>
|
|
||||||
</GroupBox>
|
|
||||||
|
|
||||||
<ikw:SimpleStackPanel Grid.Row="0" Grid.Column="1" >
|
|
||||||
<!-- 保存设置 -->
|
|
||||||
<GroupBox Header="保存设置" Margin="10 0 0 10">
|
|
||||||
<ikw:SimpleStackPanel Spacing="12" Margin="10">
|
|
||||||
<TextBlock Text="保存范围"
|
|
||||||
Style="{StaticResource TextBlockSubTitle}" />
|
|
||||||
<TextBox Width="200" Text="{Binding Variable.HistoryDeadband, UpdateSourceTrigger=PropertyChanged}" />
|
|
||||||
<CheckBox Content="是否激活"
|
|
||||||
FontSize="16"
|
|
||||||
Margin="0 10 0 0 "
|
|
||||||
IsChecked="{Binding Variable.IsActive, UpdateSourceTrigger=PropertyChanged}" />
|
|
||||||
<CheckBox Content="是否保存"
|
|
||||||
FontSize="16"
|
|
||||||
Margin="0 10 0 0 "
|
|
||||||
IsChecked="{Binding Variable.IsHistoryEnabled, UpdateSourceTrigger=PropertyChanged}" />
|
|
||||||
|
|
||||||
</ikw:SimpleStackPanel>
|
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
|
|
||||||
<!-- 报警设置 -->
|
<!-- 保存设置 -->
|
||||||
<GroupBox Header="报警设置" Margin="10 15 0 10">
|
<GroupBox Margin="0,0,0,15" Header="保存设置">
|
||||||
<ikw:SimpleStackPanel Margin="10" Spacing="12">
|
<Grid Margin="10">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
<TextBlock Text="报警最小值"
|
<ColumnDefinition Width="*" />
|
||||||
Style="{StaticResource TextBlockSubTitle}" />
|
<ColumnDefinition Width="20" />
|
||||||
<TextBox Text="{Binding Variable.AlarmMinValue, UpdateSourceTrigger=PropertyChanged}" />
|
<ColumnDefinition Width="*" />
|
||||||
<TextBlock Text="报警最大值"
|
</Grid.ColumnDefinitions>
|
||||||
Style="{StaticResource TextBlockSubTitle}" />
|
<Grid.RowDefinitions>
|
||||||
<TextBox Text="{Binding Variable.AlarmMaxValue, UpdateSourceTrigger=PropertyChanged}" />
|
<RowDefinition Height="Auto" />
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
<CheckBox Content="是否报警"
|
</Grid.RowDefinitions>
|
||||||
FontSize="16"
|
|
||||||
Margin="0 5"
|
|
||||||
IsChecked="{Binding Variable.IsAlarmEnabled, UpdateSourceTrigger=PropertyChanged}" />
|
|
||||||
</ikw:SimpleStackPanel>
|
|
||||||
</GroupBox>
|
|
||||||
</ikw:SimpleStackPanel>
|
|
||||||
|
|
||||||
</Grid>
|
<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>
|
||||||
|
</GroupBox>
|
||||||
|
|
||||||
|
<!-- 报警设置 -->
|
||||||
|
<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>
|
||||||
</ui:ContentDialog>
|
</ui:ContentDialog>
|
||||||
@@ -7,8 +7,8 @@ namespace DMS.WPF.Views.Dialogs;
|
|||||||
|
|
||||||
public partial class VariableDialog
|
public partial class VariableDialog
|
||||||
{
|
{
|
||||||
private const int ContentAreaMaxWidth = 1000;
|
private const int ContentAreaMaxWidth = 1200;
|
||||||
private const int ContentAreaMaxHeight = 800;
|
private const int ContentAreaMaxHeight = 900;
|
||||||
public VariableDialog()
|
public VariableDialog()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
@@ -17,7 +17,6 @@ public partial class VariableDialog
|
|||||||
|
|
||||||
private void OnOpened(ContentDialog sender, ContentDialogOpenedEventArgs args)
|
private void OnOpened(ContentDialog sender, ContentDialogOpenedEventArgs args)
|
||||||
{
|
{
|
||||||
//<2F>ĶԻ<C4B6><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD><C8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
|
|
||||||
var backgroundElementBorder = VisualTreeFinder.FindVisualChildByName<Border>(this, "BackgroundElement");
|
var backgroundElementBorder = VisualTreeFinder.FindVisualChildByName<Border>(this, "BackgroundElement");
|
||||||
backgroundElementBorder.MaxWidth = ContentAreaMaxWidth;
|
backgroundElementBorder.MaxWidth = ContentAreaMaxWidth;
|
||||||
backgroundElementBorder.MaxWidth = ContentAreaMaxHeight;
|
backgroundElementBorder.MaxWidth = ContentAreaMaxHeight;
|
||||||
|
|||||||
Reference in New Issue
Block a user