我有一个实现了INotifyDataErrorInfo的视图模型。我正在将文本框绑定到视图模型属性之一,如下所示:
<TextBox Text="{Binding SelfAppraisal.DesiredGrowth, Mode=TwoWay, ValidatesOnNotifyDataErrors=True,NotifyOnValidationError=True}" Height="200"
TextWrapping="Wrap"/>
数据绑定可以正常工作,但是当我添加验证错误时,UI没有响应,就像这样:
// validation failed
foreach (var error in vf.Detail.Errors)
{
AddError(SelfAppraisalPropertyName + "." + error.PropertyName, error.ErrorMessage);
}
在立即窗口中运行
GetErrors("SelfAppraisal.DesiredGrowth")
后,我可以看到:
Count = 1
[0]: "必须至少为500个字符。您输入了4个字符。"
我已确保在添加错误时连接与文本框上的绑定表达式匹配,但UI不像以前使用复杂类型时那样显示消息。我做错了什么?INotifyDataErrorInfo验证是否支持此操作?
更新
我的视图模型实现了INotifyDataErrorInfo,当添加/删除错误时会引发ErrorsChanged。
protected void RaiseErrorsChanged(string propertyName)
{
if (ErrorsChanged != null)
{
ErrorsChanged(this, new DataErrorsChangedEventArgs(propertyName));
}
}