是否可以将ValidationRules和INotifyDataErrorInfo的组合用于wpf验证?

dis*_*osr 5 c# validation wpf idataerrorinfo inotifydataerrorinfo

在WPF中,有3种验证方法:

  • 验证规则
  • IDataErrorInfo
  • INotifyDataErrorInfo

是否可以同时使用它们的组合?对于我的需求,我想使用INotifyDataErrorInfo的灵活性来验证新规则,但是不想干扰要验证的同一对象的现有ValidationRules。

Emm*_*RIN 4

1. 混合不同的误差源

是的,您可以混合引用的三种验证:

  • ValidationRules适合 GUI(表面)验证
  • IDataErrorInfo在视图模型/业务对象上实现。适合更多面向业务的验证
  • INotifyDataErrorInfo也在视图模型/业务对象上实现。它增加了给定字段上出现多个错误的可能性,并且还添加了异步验证(即服务器或线程可能需要时间来回答验证)。

最后一个错误源确实需要更长的时间来实现

2. 考虑误差

最困难的是当您想要防止窗口在数据无效时关闭时,要考虑到不同的错误源。

必须在 GUI 绑定中查找 ValidationRules 错误,因为无效数据不会到达业务对象/ViewModel。

IDataErrorInfo可以INotifiDataErrorInfo在ViewModel层中查看。

问候