1

我为 WPF 的 INotifyDataErrorInfo 找到的文档似乎指出,当通过 UI 设置值或调用 INotifyDataErrorInfo 的 ErrorsChanged 事件时调用 GetErrors() 方法。

但这与我在调试其 DataContext 是实现 INotifyDataErrorInfo 的视图模型的窗口时看到的不匹配(有问题的视图模型是基于 Mvvm Light 构建的)。

相反,GetErrors() 会在窗口初始化并设置其 DataContext 时调用,但之后在 viewmodel 代码引发 ErrorsChanged 事件时调用。在我的情况下,每当在视图模型中设置某些属性时,它都会通过我编写的代码来引发 ErrorsChanged 事件。

我问这个问题是因为我想知道是否需要处理 WPF 可能调用 GetErrors() 的情况,而我没有先调用验证代码。这可能会错误地报告不存在错误,而实际上只是这种情况,因为尚未进行验证。

4

1 回答 1

1

当引发errorschanged 时调用它。

我刚刚用我拥有的一个样本进行了实验。这个东西: https ://gallery.technet.microsoft.com/scriptcenter/WPF-Entity-Framework-MVVM-78cdc204

我在我的基类的 geterrors 方法中设置了一个断点并启动它。
在我使某些内容无效之前,不会调用 Geterrors。
如果你看到不同的行为,那么这就是你在做不同的事情。

于 2018-04-20T17:30:34.697 回答