title: Force INotifyDataErrorInfo validation
body: <p>I have implemented INotifyDataErrorInfo exactly as described in the following link:</p>
  
  <p><a href="http://blog.micic.ch/net/easy-mvvm-example-with-inotifypropertychanged-and-inotifydataerrorinfo" rel="noreferrer">http://blog.micic.ch/net/easy-mvvm-example-with-inotifypropertychanged-and-inotifydataerrorinfo</a></p>
  
  <p>I have a <code>TextBox</code> which is bound to a string property in my model.</p>
  
  <p><strong>XAML</strong></p>
  
  <pre><code>&lt;TextBox Text="{Binding FullName,
                          ValidatesOnNotifyDataErrors=True,
                          NotifyOnValidationError=True,
                          UpdateSourceTrigger=PropertyChanged}" /&gt;
  </code></pre>
  
  <p><strong>Model</strong></p>
  
  <pre><code>private string _fullName;
  public string FullName
  {
      get { return _fullName; }
      set
      {
          // Set raises OnPropertyChanged
          Set(ref _fullName, value);
  
          if (string.IsNullOrWhiteSpace(_fullName))
              AddError(nameof(FullName), "Name required");
          else
              RemoveError(nameof(FullName));                
      }
  }
  </code></pre>
  
  <p><strong>INotifyDataError Code</strong></p>
  
  <pre><code>private Dictionary&lt;string, List&lt;string&gt;&gt; _errors = new Dictionary&lt;string, List&lt;string&gt;&gt;();
  
  public event EventHandler&lt;DataErrorsChangedEventArgs&gt; ErrorsChanged;
  
  // get errors by property
  public IEnumerable GetErrors(string propertyName)
  {
      if (_errors.ContainsKey(propertyName))
          return _errors[propertyName];
      return null;
  }
  
  public bool HasErrors =&gt; _errors.Count &gt; 0;
  
  // object is valid
  public bool IsValid =&gt; !HasErrors;
  
  public void AddError(string propertyName, string error)
  {
      // Add error to list
      _errors[propertyName] = new List&lt;string&gt;() { error };
      NotifyErrorsChanged(propertyName);
  }
  
  public void RemoveError(string propertyName)
  {
      // remove error
      if (_errors.ContainsKey(propertyName))
          _errors.Remove(propertyName);
      NotifyErrorsChanged(propertyName);
  }
  
  public void NotifyErrorsChanged(string propertyName)
  {
      // Notify
      if (ErrorsChanged != null)
         ErrorsChanged(this, new DataErrorsChangedEventArgs(propertyName));
  }
  </code></pre>
  
  <p>Now all this works fine, but it only validates as soon as I <strong>type something in my TextBox</strong>. I would like some way to validate on demand, without even touching the textbox, say on a button click. </p>
  
  <p>I have tried raising PropertyChanged for all my properties as described in <a href="https://stackoverflow.com/questions/9986292/how-to-force-validation-errors-update-on-view-from-viewmodel-using-idataerrorinf">this</a> question, but it does not detect the errors. I somehow need my property setter to be called so the errors can be detected. I'm looking for a MVVM solution.</p>