AddPlc.xaml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <UserControl x:Class="TeamAAS_VP.Views.Setting.AddPlc"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:prism="http://prismlibrary.com/"
  5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  6. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  7. xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
  8. xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
  9. xmlns:sys="clr-namespace:System;assembly=mscorlib"
  10. xmlns:enums="clr-namespace:TeamAAS_VP.Enums"
  11. xmlns:convert="clr-namespace:TeamAAS_VP.ValueConverter"
  12. xmlns:valRules="clr-namespace:TeamAAS_VP.Identity"
  13. xmlns:validationRule="clr-namespace:TeamAAS_VP.ValidationRules"
  14. xmlns:ext="clr-namespace:TeamAAS_VP.Extension"
  15. xmlns:lex="http://wpflocalizeextension.codeplex.com"
  16. xmlns:vm="clr-namespace:TeamAAS_VP.ViewModels.Setting"
  17. lex:LocalizeDictionary.DesignCulture="zh-CN"
  18. lex:ResxLocalizationProvider.DefaultAssembly="TeamAAS-VP"
  19. lex:ResxLocalizationProvider.DefaultDictionary="Lang"
  20. mc:Ignorable="d"
  21. d:Background="White"
  22. d:DataContext="{d:DesignInstance Type=vm:AddPlcViewModel}"
  23. prism:ViewModelLocator.AutoWireViewModel="True"
  24. FontFamily="{DynamicResource DefaultFont}">
  25. <UserControl.Resources>
  26. <convert:CommunicationTypeVisibilityConverter x:Key="CommunicationTypeVisibilityConverter" />
  27. </UserControl.Resources>
  28. <prism:Dialog.WindowStyle>
  29. <Style TargetType="Window">
  30. <Setter Property="prism:Dialog.WindowStartupLocation" Value="CenterScreen" />
  31. <Setter Property="WindowStyle" Value="None" />
  32. <Setter Property="AllowDrop" Value="True" />
  33. <Setter Property="BorderThickness" Value="0" />
  34. <Setter Property="ShowInTaskbar" Value="False" />
  35. <Setter Property="SizeToContent" Value="WidthAndHeight" />
  36. <Setter Property="WindowState" Value="Normal" />
  37. <Setter Property="Topmost" Value="True" />
  38. </Style>
  39. </prism:Dialog.WindowStyle>
  40. <Grid HorizontalAlignment="Center" MinWidth="520">
  41. <Grid.RowDefinitions>
  42. <RowDefinition Height="*" />
  43. <RowDefinition Height="50" />
  44. </Grid.RowDefinitions>
  45. <ScrollViewer Grid.Row="0" Margin="20,20" MaxHeight="520" VerticalScrollBarVisibility="Auto">
  46. <StackPanel>
  47. <Grid>
  48. <Grid.RowDefinitions>
  49. <RowDefinition MinHeight="40" />
  50. <RowDefinition MinHeight="40" />
  51. <RowDefinition MinHeight="40" />
  52. </Grid.RowDefinitions>
  53. <Grid.ColumnDefinitions>
  54. <ColumnDefinition Width="120" />
  55. <ColumnDefinition Width="*" />
  56. </Grid.ColumnDefinitions>
  57. <TextBlock Text="Id: " Grid.Row="0" Grid.Column="0"
  58. Style="{StaticResource MaterialDesignSubtitle1TextBlock}"
  59. HorizontalAlignment="Right" VerticalAlignment="Center" />
  60. <TextBlock x:Name="txt_Id" Text="{Binding SelectedPlc.Id,Mode=TwoWay}"
  61. Grid.Row="0" Grid.Column="1" Margin="10,0"
  62. HorizontalAlignment="Left" VerticalAlignment="Center" />
  63. <TextBlock Text="{lex:Loc 名称,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0}: '}"
  64. Grid.Row="1" Grid.Column="0"
  65. Style="{StaticResource MaterialDesignSubtitle1TextBlock}"
  66. HorizontalAlignment="Right" VerticalAlignment="Center" />
  67. <TextBox x:Name="txt_Name" Grid.Row="1" Grid.Column="1" Margin="10,0"
  68. MinWidth="200" TextAlignment="Center"
  69. HorizontalAlignment="Left" VerticalAlignment="Center">
  70. <TextBox.Text>
  71. <Binding Path="SelectedPlc.Name" Mode="TwoWay">
  72. <Binding.ValidationRules>
  73. <valRules:NameValidationRule />
  74. </Binding.ValidationRules>
  75. </Binding>
  76. </TextBox.Text>
  77. </TextBox>
  78. <TextBlock Text="{lex:Loc 通讯方式,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0}: '}"
  79. Grid.Row="2" Grid.Column="0"
  80. Style="{StaticResource MaterialDesignSubtitle1TextBlock}"
  81. HorizontalAlignment="Right" VerticalAlignment="Center" />
  82. <ComboBox SelectedItem="{Binding SelectedPlc.CommunicationType,Mode=TwoWay}"
  83. Grid.Row="2" Grid.Column="1" Margin="10,0" MinWidth="200"
  84. ItemsSource="{ext:EnumBindingSource EnumType=enums:CommunicationType}"
  85. HorizontalContentAlignment="Center"
  86. HorizontalAlignment="Left" VerticalAlignment="Center" />
  87. </Grid>
  88. <Grid Margin="0,12,0,0"
  89. Visibility="{Binding SelectedPlc.CommunicationType, Converter={StaticResource CommunicationTypeVisibilityConverter}, ConverterParameter=OPC_UA_Client}">
  90. <Grid.ColumnDefinitions>
  91. <ColumnDefinition Width="120" />
  92. <ColumnDefinition Width="*" />
  93. </Grid.ColumnDefinitions>
  94. <TextBlock Text="Endpoint Url: "
  95. Style="{StaticResource MaterialDesignSubtitle1TextBlock}"
  96. HorizontalAlignment="Right" VerticalAlignment="Center" />
  97. <TextBox Grid.Column="1" Margin="10,0" MinWidth="200"
  98. TextAlignment="Center" HorizontalAlignment="Left"
  99. Text="{Binding SelectedPlc.EndpointUrl}" />
  100. </Grid>
  101. <StackPanel Margin="0,12,0,0"
  102. Visibility="{Binding SelectedPlc.CommunicationType, Converter={StaticResource CommunicationTypeVisibilityConverter}, ConverterParameter=Mitsubishi_MC}">
  103. <Grid>
  104. <Grid.ColumnDefinitions>
  105. <ColumnDefinition Width="120" />
  106. <ColumnDefinition Width="*" />
  107. <ColumnDefinition Width="120" />
  108. <ColumnDefinition Width="*" />
  109. </Grid.ColumnDefinitions>
  110. <Grid.RowDefinitions>
  111. <RowDefinition Height="Auto" />
  112. <RowDefinition Height="Auto" />
  113. </Grid.RowDefinitions>
  114. <TextBlock Text="PLC IP:" VerticalAlignment="Center" HorizontalAlignment="Right" />
  115. <TextBox Grid.Column="1" Margin="8,4" Text="{Binding SelectedPlc.PlcIp, Mode=TwoWay}" />
  116. <TextBlock Grid.Column="2" Text="端口:" VerticalAlignment="Center" HorizontalAlignment="Right" />
  117. <TextBox Grid.Column="3" Margin="8,4" Text="{Binding SelectedPlc.PlcPort, Mode=TwoWay}" />
  118. <TextBlock Grid.Row="1" Text="心跳地址:" VerticalAlignment="Center" HorizontalAlignment="Right" />
  119. <TextBox Grid.Row="1" Grid.Column="1" Margin="8,4" Text="{Binding SelectedPlc.PlcHeartbeatDevice, Mode=TwoWay}" />
  120. <TextBlock Grid.Row="1" Grid.Column="2" Text="心跳间隔ms:" VerticalAlignment="Center" HorizontalAlignment="Right" />
  121. <TextBox Grid.Row="1" Grid.Column="3" Margin="8,4" Text="{Binding SelectedPlc.PlcHeartbeatIntervalMs, Mode=TwoWay}" />
  122. </Grid>
  123. <CheckBox Margin="0,8,0,0"
  124. Content="启用 Ready 握手"
  125. IsChecked="{Binding SelectedPlc.PlcForwardEnabled, Mode=TwoWay}" />
  126. <GroupBox Header="握手映射" Margin="0,8,0,0">
  127. <Grid Margin="8">
  128. <Grid.ColumnDefinitions>
  129. <ColumnDefinition Width="120" />
  130. <ColumnDefinition Width="*" />
  131. </Grid.ColumnDefinitions>
  132. <Grid.RowDefinitions>
  133. <RowDefinition Height="Auto" />
  134. <RowDefinition Height="Auto" />
  135. <RowDefinition Height="Auto" />
  136. <RowDefinition Height="Auto" />
  137. </Grid.RowDefinitions>
  138. <TextBlock Text="端口(PLC→PC):" VerticalAlignment="Center" HorizontalAlignment="Right" />
  139. <TextBox Grid.Column="1" Margin="8,4" Text="{Binding SelectedPlc.PlcPortDevice, Mode=TwoWay}" />
  140. <TextBlock Grid.Row="1" Text="数据起始:" VerticalAlignment="Center" HorizontalAlignment="Right" />
  141. <TextBox Grid.Row="1" Grid.Column="1" Margin="8,4" Text="{Binding SelectedPlc.PlcDataStartDevice, Mode=TwoWay}" />
  142. <TextBlock Grid.Row="2" Text="Ready:" VerticalAlignment="Center" HorizontalAlignment="Right" />
  143. <TextBox Grid.Row="2" Grid.Column="1" Margin="8,4" Text="{Binding SelectedPlc.PlcReadyBitDevice, Mode=TwoWay}" />
  144. <TextBlock Grid.Row="3" Text="Receive:" VerticalAlignment="Center" HorizontalAlignment="Right" />
  145. <TextBox Grid.Row="3" Grid.Column="1" Margin="8,4" Text="{Binding SelectedPlc.PlcReceiveBitDevice, Mode=TwoWay}" />
  146. </Grid>
  147. </GroupBox>
  148. </StackPanel>
  149. </StackPanel>
  150. </ScrollViewer>
  151. <StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right">
  152. <Button Height="30" materialDesign:ButtonAssist.CornerRadius="10"
  153. ToolTip="{lex:Loc 确定}" Command="{Binding ConfirmCommand}">
  154. <TextBlock Text="{lex:Loc 确定}" />
  155. <Button.Style>
  156. <Style TargetType="Button" BasedOn="{StaticResource MaterialDesignRaisedButton}">
  157. <Style.Triggers>
  158. <MultiDataTrigger>
  159. <MultiDataTrigger.Conditions>
  160. <Condition Binding="{Binding ElementName=txt_Name, Path=(Validation.HasError)}" Value="False" />
  161. </MultiDataTrigger.Conditions>
  162. <Setter Property="IsEnabled" Value="True" />
  163. </MultiDataTrigger>
  164. </Style.Triggers>
  165. </Style>
  166. </Button.Style>
  167. </Button>
  168. <Button Height="30" Margin="20,0"
  169. materialDesign:ButtonAssist.CornerRadius="10"
  170. Style="{StaticResource MaterialDesignRaisedButton}"
  171. ToolTip="{lex:Loc 取消}" Command="{Binding CancelCommand}">
  172. <TextBlock Text="{lex:Loc 取消}" />
  173. </Button>
  174. </StackPanel>
  175. </Grid>
  176. </UserControl>