我在我的一个类中实现了IDataErrorInfo来验证该类的属性。该属性绑定到我的wpf用户控件上的控件。验证工作正常,除了有一个重要的缺陷。
在更新属性之前,似乎是在调用IDataErrorInfo成员公共字符串this [string columnName],因此当我检查要更改的属性的值时,它包含的前一个值不是刚刚输入的值。因此,验证总是落后一步。这意味着我无法检查刚刚输入的错误值。
是否有任何方法可以在更新属性之后强制调用此验证,而不是之前。我曾尝试将UpdateSourceTrigger更改为LostFocus和PropertyChanged,但它们仍会在不同时间报告上一个值。
感谢。
答案 0 :(得分:3)
在分配属性之前发送属性更改通知时,可以重现您引用的行为。
public string FirstName
{
get { return _firstName; }
set
{
if (this.PropertyChanged != null)
{
this.PropertyChanged
(this, new PropertyChangedEventArgs("FirstName"));
}
_firstName = value;
}
}
实际设置值后可能会调用更改通知可能会起作用。只是为了记录我不会像这样调用属性更改通知!