在 WPF 中,有 3 种方法可以进行验证:
- 验证规则
IDataErrorInfo
INotifyDataErrorInfo
是否可以同时使用这些组合?出于我的需要,我想使用 INotifyDataErrorInfo 的灵活性来验证新规则,但不想干扰我想要验证的同一对象的现有 ValidationRules。
在 WPF 中,有 3 种方法可以进行验证:
IDataErrorInfo
INotifyDataErrorInfo
是否可以同时使用这些组合?出于我的需要,我想使用 INotifyDataErrorInfo 的灵活性来验证新规则,但不想干扰我想要验证的同一对象的现有 ValidationRules。
1.混合不同的错误来源
是的,您可以混合引用您引用的三种验证:
ValidationRules
非常适合 GUI(表面)验证IDataErrorInfo
在视图模型/业务对象上实现。适合更多面向业务的验证INotifyDataErrorInfo
也在视图模型/业务对象上实现。它增加了给定字段出现多个错误的可能性,还增加了异步验证(即服务器或线程可能需要时间来响应验证)。 最后一个错误来源确实需要更长的时间来实现
2. 考虑错误
最难的是在数据无效时防止窗口关闭时考虑不同的错误来源。
必须在 GUI 绑定中查找 ValidationRules 错误,因为无效数据不会到达业务对象/ViewModel。
IDataErrorInfo
并且INotifiDataErrorInfo
可以在 ViewModel 层中查看。
问候