WPF ValidationRule 加载控件时验证

2024-04-03

我有一个带有此验证的控件

<MyPicker.SelectedItem>
 <Binding Path="Person.Value" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" NotifyOnValidationError="True">
  <Binding.ValidationRules>
   <rules:MyValidationRule ValidationType="notnull"/>
  </Binding.ValidationRules>
 </Binding>
</MyPicker.SelectedItem>

这是验证类:

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;
  }
 }
}

问题:当属性更改时,将调用 Validate( ) 方法,这是正确的。

但是一开始就调用这个方法当创建 MyControl 时?我需要证明即时初始化后如果控件中有空值(并显示验证错误)


好的我已经解决了: 当元素与简单属性绑定时,您强制进行验证 -ValidatesOnTargetUpdated:

 <rules:MyValidationRule ValidatesOnTargetUpdated="True"  ValidationType="notnull"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF ValidationRule 加载控件时验证 的相关文章

随机推荐