在实现IDataErrorInfo之后,如何在更新clr属性之后验证clr属性?

时间:2009-09-16 08:37:55

标签: c# wpf xaml idataerrorinfo

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

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

是否有任何方法可以在更新属性之后强制调用此验证,而不是之前。我曾尝试将UpdateSourceTrigger更改为LostFocus和PropertyChanged,但它们仍会在不同时间报告上一个值。

感谢。

1 个答案:

答案 0 :(得分:3)

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

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

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