WPF Validation Manually Adding Errors into Validation.Errors Collection

前端 未结 2 1453
别那么骄傲
别那么骄傲 2021-02-13 17:25

Is there any way to manually/dynamically add errors to the Validation.Errors collection?

2条回答
  •  佛祖请我去吃肉
    2021-02-13 18:03

    jrwren's answer guided me in the right direction, but wasn't very clear as to what regexValidationRule was nor how to clear the validation error. Here's the end result I came up with.

    I chose to use Tag since I was using this manual validation in a situation where I wasn't actually using a viewmodel or bindings. This gave something I could bind to without worrying about affecting the view.

    Adding a binding in code behind:

    private void AddValidationAbility(FrameworkElement uiElement)
    {
      var binding = new Binding("TagProperty");
      binding.Source = this;
    
      uiElement.SetBinding(FrameworkElement.TagProperty, binding);
    }
    

    and trigging a validation error on it without using IDataError:

    using System.Windows;
    using System.Windows.Controls;
    
        private void UpdateValidation(FrameworkElement control, string error)
        {
          var bindingExpression = control.GetBindingExpression(FrameworkElement.TagProperty);
    
          if (error == null)
          {
            Validation.ClearInvalid(bindingExpression);
          }
          else
          {
            var validationError = new ValidationError(new DataErrorValidationRule(), bindingExpression);
            validationError.ErrorContent = error;
            Validation.MarkInvalid(bindingExpression, validationError);
          }
        }
    

提交回复
热议问题