我有一个控件与此验证
<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)