skipped 12 lines 13 13 xmlns:localization="clr-namespace:NETworkManager.Localization.Resources;assembly=NETworkManager.Localization" 14 14 xmlns:dialogs="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro" 15 15 xmlns:controls="clr-namespace:NETworkManager.Controls;assembly=NETworkManager.Controls" 16 + xmlns:wpfHelpers="clr-namespace:NETworkManager.Utilities.WPF;assembly=NETworkManager.Utilities.WPF" 17 + xmlns:interactivity="http://schemas.microsoft.com/xaml/behaviors" 16 18 dialogs:DialogParticipation.Register="{Binding}" 17 19 mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:SNMPViewModel}"> 18 20 <UserControl.Resources> skipped 77 lines 96 98 </Style> 97 99 </TextBlock.Style> 98 100 </TextBlock> 99 - <TextBox Grid.Column="8" Grid.Row="2" Grid.ColumnSpan="5" Name="TextBoxCommunity " mah:TextBoxHelper.Watermark="{x:Static localization:StaticStrings.ExampleSNMPCommunity}" IsEnabled="{Binding IsWorking, Converter={StaticResource BooleanReverseConverter}}"> 100 - <TextBox.Style> 101 - <Style TargetType="{x:Type TextBox }" BasedOn="{StaticResource DefaultTextBox }"> 101 + <PasswordBox Grid.Column="8" Grid.Row="2" Grid.ColumnSpan="5" Name="PasswordBoxCommunity " mah:TextBoxHelper.Watermark="{x:Static localization:StaticStrings.ExampleSNMPCommunity}" IsEnabled="{Binding IsWorking, Converter={StaticResource BooleanReverseConverter}}"> 102 + <PasswordBox.Style> 103 + <Style TargetType="{x:Type PasswordBox }" BasedOn="{StaticResource DefaultPasswordBox }"> 102 104 <Setter Property="Visibility" Value="Visible" /> 103 105 <Style.Triggers> 104 106 <DataTrigger Binding="{Binding Version}" Value="v3"> skipped 1 lines 106 108 </DataTrigger> 107 109 </Style.Triggers> 108 110 </Style> 109 - </TextBox .Style> 110 - <TextBox.Text> 111 - <Binding Path ="Community" Mode=" TwoWay" UpdateSourceTrigger=" PropertyChanged"> 112 - <Binding.ValidationRules> 113 - <validators:EmptyValidator ValidatesOnTargetUpdated="True" /> 114 - </Binding.ValidationRules> 115 - </Binding> 116 - </TextBox.Text> 117 - </TextBox> 111 + </PasswordBox .Style> 112 + <interactivity:Interaction.Behaviors> 113 + <wpfHelpers : PasswordBoxBindingBehavior Password ="{ Binding Community, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged} " / > 114 + </interactivity:Interaction.Behaviors> 115 + </PasswordBox> 118 116 <TextBlock Grid.Column="6" Grid.Row="2" Text="{x:Static localization:Strings.Security}"> 119 117 <TextBlock.Style> 120 118 <Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource CenterTextBlock}"> skipped 103 lines 224 222 </Style> 225 223 </ComboBox.Style> 226 224 </ComboBox> 227 - <TextBox Grid.Column="4" Grid.Row="3" Name="TextBoxAuth " IsEnabled="{Binding IsWorking, Converter={StaticResource BooleanReverseConverter}}" Margin="0,10,0,0"> 228 - <TextBox.Style> 229 - <Style TargetType="{x:Type TextBox }" BasedOn="{StaticResource DefaultTextBox }"> 225 + <PasswordBox Grid.Column="4" Grid.Row="3" Name="PasswordBoxAuth " IsEnabled="{Binding IsWorking, Converter={StaticResource BooleanReverseConverter}}" Margin="0,10,0,0"> 226 + <PasswordBox.Style> 227 + <Style TargetType="{x:Type PasswordBox }" BasedOn="{StaticResource DefaultPasswordBox }"> 230 228 <Setter Property="Visibility" Value="Collapsed" /> 231 229 <Style.Triggers> 232 230 <MultiDataTrigger> skipped 16 lines 249 247 </MultiDataTrigger> 250 248 </Style.Triggers> 251 249 </Style> 252 - </TextBox .Style> 253 - <TextBox.Text> 254 - <Binding Path ="Auth" Mode=" TwoWay" UpdateSourceTrigger=" PropertyChanged"> 255 - <Binding.ValidationRules> 256 - <validators:EmptyValidator ValidatesOnTargetUpdated="True" /> 257 - </Binding.ValidationRules> 258 - </Binding> 259 - </TextBox.Text> 260 - </TextBox> 250 + </PasswordBox .Style> 251 + <interactivity:Interaction.Behaviors> 252 + <wpfHelpers : PasswordBoxBindingBehavior Password ="{ Binding Auth, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged} " / > 253 + </interactivity:Interaction.Behaviors> 254 + </PasswordBox> 261 255 <TextBlock Grid.Column="6" Grid.Row="3" Text="{x:Static localization:Strings.Priv}" Margin="0,10,0,0"> 262 256 <TextBlock.Style> 263 257 <Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource CenterTextBlock}"> skipped 30 lines 294 288 </Style> 295 289 </ComboBox.Style> 296 290 </ComboBox> 297 - <TextBox Grid.Column="10" Grid.ColumnSpan="3" Grid.Row="3" Name="TextBoxPriv " IsEnabled="{Binding IsWorking, Converter={StaticResource BooleanReverseConverter}}" Margin="0,10,0,0"> 298 - <TextBox.Style> 299 - <Style TargetType="{x:Type TextBox }" BasedOn="{StaticResource DefaultTextBox }"> 291 + <PasswordBox Grid.Column="10" Grid.ColumnSpan="3" Grid.Row="3" Name="PasswordBoxPriv " IsEnabled="{Binding IsWorking, Converter={StaticResource BooleanReverseConverter}}" Margin="0,10,0,0"> 292 + <PasswordBox.Style> 293 + <Style TargetType="{x:Type PasswordBox }" BasedOn="{StaticResource DefaultPasswordBox }"> 300 294 <Setter Property="Visibility" Value="Collapsed" /> 301 295 <Style.Triggers> 302 296 <MultiDataTrigger> skipped 7 lines 310 304 </MultiDataTrigger> 311 305 </Style.Triggers> 312 306 </Style> 313 - </TextBox .Style> 314 - <TextBox.Text> 315 - <Binding Path ="Priv" Mode=" TwoWay" UpdateSourceTrigger=" PropertyChanged"> 316 - <Binding.ValidationRules> 317 - <validators:EmptyValidator ValidatesOnTargetUpdated="True" /> 318 - <validators:PrivacyAESValidator ValidatesOnTargetUpdated="True" /> 319 - </Binding.ValidationRules> 320 - </Binding> 321 - </TextBox.Text> 322 - </TextBox> 307 + </PasswordBox .Style> 308 + <interactivity:Interaction.Behaviors> 309 + <wpfHelpers : PasswordBoxBindingBehavior Password ="{ Binding Priv, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged} " / > 310 + </interactivity:Interaction.Behaviors> 311 + </PasswordBox> 323 312 </Grid> 324 313 <!-- ReSharper disable once Xaml.MissingGridIndex, in Resources --> 325 314 <Button x:Name="ButtonQuery" Grid.Column="2" Command="{Binding WorkCommand}" IsDefault="{Binding IsWorking, Converter={StaticResource BooleanReverseConverter}}" IsCancel="{Binding IsWorking}" VerticalAlignment="Bottom"> skipped 12 lines 338 327 <Condition Binding="{Binding Version}" Value="v1" /> 339 328 <Condition Binding="{Binding ElementName=ComboBoxHost, Path=(Validation.HasError)}" Value="False" /> 340 329 <Condition Binding="{Binding ElementName=ComboBoxOID, Path=(Validation.HasError)}" Value="False" /> 341 - <Condition Binding="{Binding ElementName = TextBoxCommunity , Path = ( Validation . HasError ) }" Value="False" /> 330 + <Condition Binding="{Binding IsCommunityEmpty }" Value="False" /> 342 331 <Condition Binding="{Binding IsWorking}" Value="False" /> 343 332 </MultiDataTrigger.Conditions> 344 333 <MultiDataTrigger.Setters> skipped 5 lines 350 339 <Condition Binding="{Binding Version}" Value="v2c" /> 351 340 <Condition Binding="{Binding ElementName=ComboBoxHost, Path=(Validation.HasError)}" Value="False" /> 352 341 <Condition Binding="{Binding ElementName=ComboBoxOID, Path=(Validation.HasError)}" Value="False" /> 353 - <Condition Binding="{Binding ElementName = TextBoxCommunity , Path = ( Validation . HasError ) }" Value="False" /> 342 + <Condition Binding="{Binding IsCommunityEmpty }" Value="False" /> 354 343 <Condition Binding="{Binding IsWorking}" Value="False" /> 355 344 </MultiDataTrigger.Conditions> 356 345 <MultiDataTrigger.Setters> skipped 20 lines 377 366 <Condition Binding="{Binding ElementName=ComboBoxHost, Path=(Validation.HasError)}" Value="False" /> 378 367 <Condition Binding="{Binding ElementName=ComboBoxOID, Path=(Validation.HasError)}" Value="False" /> 379 368 <Condition Binding="{Binding ElementName=TextBoxUsername, Path=(Validation.HasError)}" Value="False" /> 380 - <Condition Binding="{Binding ElementName = TextBoxAuth , Path = ( Validation . HasError ) }" Value="False" /> 369 + <Condition Binding="{Binding IsAuthEmpty }" Value="False" /> 381 370 <Condition Binding="{Binding IsWorking}" Value="False" /> 382 371 </MultiDataTrigger.Conditions> 383 372 <MultiDataTrigger.Setters> skipped 7 lines 391 380 <Condition Binding="{Binding ElementName=ComboBoxHost, Path=(Validation.HasError)}" Value="False" /> 392 381 <Condition Binding="{Binding ElementName=ComboBoxOID, Path=(Validation.HasError)}" Value="False" /> 393 382 <Condition Binding="{Binding ElementName=TextBoxUsername, Path=(Validation.HasError)}" Value="False" /> 394 - <Condition Binding="{Binding ElementName = TextBoxAuth , Path = ( Validation . HasError ) }" Value="False" /> 395 - <Condition Binding="{Binding ElementName = TextBoxPriv , Path = ( Validation . HasError ) }" Value="False" /> 383 + <Condition Binding="{Binding IsAuthEmpty }" Value="False" /> 384 + <Condition Binding="{Binding IsPrivEmpty }" Value="False" /> 396 385 <Condition Binding="{Binding IsWorking}" Value="False" /> 397 386 </MultiDataTrigger.Conditions> 398 387 <MultiDataTrigger.Setters> skipped 176 lines