0

我已经在我的一个类中实现了 IDataErrorInfo 来验证该类的属性。该属性绑定到我的 wpf 用户控件上的控件。验证工作正常,除了有一个重要缺陷。

它似乎在更新属性之前调用了 IDataErrorInfo 成员 public string this[string columnName],所以当我检查正在更改的属性的值时,它包含以前的值而不是刚刚输入的值。因此,验证总是落后一步。这意味着我无法检查刚刚输入的错误值。

有没有办法强制在属性更新之后而不是之前调用此验证。我尝试将 UpdateSourceTrigger 更改为 LostFocus 和 PropertyChanged,但它们仍然报告以前的值,只是在不同的时间。

谢谢。

4

1 回答 1

3

在分配属性之前发送属性更改通知时,可以重现您所指的行为。

public string FirstName
{
    get { return _firstName; }
    set
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged
                (this, new PropertyChangedEventArgs("FirstName"));
        }
        _firstName = value;
    }
}

在您实际设置值后可能会调用更改通知可能会起作用。只是为了记录,我不会像这样调用属性更改通知!

于 2009-09-18T18:44:41.237 回答