【问题标题】:Does binding engine also call INotifyDataErrorInfo GetErrors() when ErrorsChanged event is not invoked by viewmodel?当 Viewmodel 未调用 ErrorsChanged 事件时,绑定引擎是否还会调用 INotifyDataErrorInfo GetErrors()?
【发布时间】:2022-01-02 12:06:14
【问题描述】:

我有一个实现INotifyDataErrorInfo 接口的视图模型。

当属性更新并发生验证错误时,我调用 ErrorsChanged 事件,然后绑定引擎知道它必须在我的视图模型上调用 GetErrors(string propertyName) 方法,并从那里返回 IEnumerable对应 propertyName 的错误。 没什么特别的。

但是当我调试时,似乎是在视图模型属性更改时调用了GetErrors() 方法(当然是在调用 INotifyPropertyChanged.PropertyChanged 时)。即使我的视图模型没有调用ErrorsChanged

当通知属性更改时,绑定引擎是否会自行调用GetErrors()? (因此不仅当我的视图模型显式调用 ErrorsChanged 时?)

我在文档中找不到它。

【问题讨论】:

    标签: c# wpf validation data-binding inotifydataerrorinfo


    【解决方案1】:

    当通知属性更改时,绑定引擎是否会自行调用 GetErrors()? (因此不仅当我的视图模型显式调用 ErrorsChanged 时?)

    是的。 TransferValue 方法最终在您为 UI 绑定源属性引发 PropertyChanged 事件时被调用,在 BindingExpression 类中调用 UpdateNotifyDataErrors,正如您在 source code 中看到的那样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-09-30
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多