【发布时间】:2011-09-18 23:04:18
【问题描述】:
我有一个实现 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]: "Must be at least 500 characters. You typed 4 characters."
我已确保添加错误时的连接与文本框上的绑定表达式匹配,但 UI 不会像我切换到使用复杂类型之前那样显示消息。
我做错了什么?使用 INotifyDataErrorInfo 进行验证是否支持这一点?
更新
实现 INotifyDataErrorInfo 的视图模型在添加/删除错误时确实会引发 ErrorsChanged。
protected void RaiseErrorsChanged(string propertyName)
{
if (ErrorsChanged != null)
{
ErrorsChanged(this, new DataErrorsChangedEventArgs(propertyName));
}
}
【问题讨论】:
-
你会引发 ErrorsChanged 事件吗?
-
是的,即使在我的视图模型中添加/删除错误时,我也会提出这个问题。
-
谢谢,支持这个的人。不必在这个对象上包装属性会非常酷。
标签: .net silverlight validation