WPF ValidationRule在加载控件时验证

PaN*_*1Me 8 validation wpf

我有一个控件与此验证

<MyPicker.SelectedItem>
 <Binding Path="Person.Value" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" NotifyOnValidationError="True">
  <Binding.ValidationRules>
   <rules:MyValidationRule ValidationType="notnull"/>
  </Binding.ValidationRules>
 </Binding>
</MyPicker.SelectedItem>
Run Code Online (Sandbox Code Playgroud)

这是验证类:

class MyValidationRule : ValidationRule
{        
 private string _validationType;
 public string ValidationType
 {
  get { return _validationType; }
  set { _validationType = value;  }
 }

 public override ValidationResult Validate(object value, CultureInfo cultureInfo)
 {            
  ValidationResult trueResult = new ValidationResult(true, null);

  switch (_validationType.ToLower())
  {
   case "notnull": return value == null ? new ValidationResult(false, "EMPTY FIELD") : trueResult;               
   default: return trueResult;
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

问题:更改属性后,将调用Validate()方法,该方法是正确的.

但是在创建MyControl时最初调用此方法?我需要在初始化后立即证明控件中是否存在空值(并显示验证错误)

PaN*_*1Me 18

好的我已经解决了:当元素绑定了一个简单的属性时强制验证 - ValidatesOnTargetUpdated:

 <rules:MyValidationRule ValidatesOnTargetUpdated="True"  ValidationType="notnull"/>
Run Code Online (Sandbox Code Playgroud)