private void Password_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if (e.PropertyName == nameof(Password)) { if (sender != Password) { Password.RunValidation(); } if (sender != ConfirmPassword) { ConfirmPassword.RunValidation(); } } }
public PasswordUpdateDialogViewModel(IValidate <SecureString> originalValidator, IValidate <SecureString> confirmValidator) { SuccessEnableCallback = defaultEnable => (Password.HasErrors || ConfirmPassword.HasErrors) == false; Password.Validator = originalValidator; if (confirmValidator is NullValidator <SecureString> ) { confirmValidator = new CallbackValidator <SecureString>(o => Password.Password.Length != 0 && Perform.SecureStringCompare(Password.Password, ConfirmPassword.Password) ? new OperationResult() : new OperationResult(new[] { new ValidationFailedException("Both fields must match.") }) ); } ConfirmPassword.Validator = confirmValidator; Password.PropertyChanged += Password_PropertyChanged; ConfirmPassword.PropertyChanged += Password_PropertyChanged; Password.RunValidation(); ConfirmPassword.RunValidation(); }