代码之家  ›  专栏  ›  技术社区  ›  HAdes

在实现IDataErrorInfo之前,如何在更新后而不是更新后验证CLR属性?

  •  0
  • HAdes  · 技术社区  · 15 年前

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

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

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

    谢谢。

    1 回复  |  直到 13 年前
        1
  •  3
  •   Trainee4Life    15 年前

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

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

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