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