什么时候调用 INotifyDataErrorInfo GetErrors()?

When is INotifyDataErrorInfo GetErrors() Called?

我找到的有关 WPF 的 INotifyDataErrorInfo 的文档似乎指出,当通过 UI 设置值时或由于 INotifyDataErrorInfo 的 ErrorsChanged 事件已被调用时,将调用 GetErrors() 方法打电话。

但这与我在调试 window 时看到的不符,该 window 的 DataContext 是一个实现 INotifyDataErrorInfo 的视图模型(有问题的视图模型是基于 Mvvm Light 构建的)。

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

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

它在引发 errorchanged 时被调用。

我刚刚试验了一个样本。这件事:https://gallery.technet.microsoft.com/scriptcenter/WPF-Entity-Framework-MVVM-78cdc204

我在我的基础 class 的 geterrors 方法中放置了一个断点并启动它。
Geterrors 直到我做了一些无效的事情才被调用。
如果您看到不同的行为,那说明您的行为有所不同。