我在WPF的INotifyDataErrorInfo中找到的文档似乎表明,当通过UI设置值或者调用了INotifyDataErrorInfo的ErrorsChanged事件时,会调用GetErrors()方法。
但这与我在调试一个窗口时所看到的不一致,该窗口的DataContext是一个实现INotifyDataErrorInfo的viewmodel(所讨论的viewmodel是基于Mvvm Light构建的)。
相反,在初始化窗口并设置其DataContext时调用GetErrors(),但在viewmodel代码引发ErrorsChanged事件后,仅。在我的情况下,只要在viewmodel中设置了某些属性,就会通过我编写的代码来提升ErrorsChanged事件。
我问这个问题是因为我想知道我是否需要处理在没有调用验证代码的情况下WPF可能调用GetErrors()的情况。这可能会错误地报告没有错误存在,事实上只是因为验证还没有发生。
答案 0 :(得分:1)
在引发errorschanged时调用它。
我刚试验了一个样本。这件事:https://gallery.technet.microsoft.com/scriptcenter/WPF-Entity-Framework-MVVM-78cdc204
我在我的基类的geterrors方法中设置了一个断点并将其旋转起来 在我做出无效之前,没有调用Geterrors 如果你看到不同的行为,那么你就会采取不同的行为。