数据输入表单构建指南
1. 对象级验证错误处理
在通过接口返回对象级验证错误时,即便验证是在对象层面进行的,也需要将验证错误与对象的属性关联起来,否则这些错误不会在用户界面中显示。控件仅会显示其绑定属性的验证错误,而 ValidationSummary
控件仅会显示分配给(或继承自)其 DataContext
属性的对象的属性级和对象级验证错误。
因此,应将任何对象级验证错误与规则涉及的所有属性相关联,或者简单地将验证错误分配给其中一个属性。完成此操作后,还需将这些验证错误通知给用户界面。实现 IDataErrorInfo
接口时,需要为对象级验证规则涉及的每个属性引发 PropertyChanged
事件(通过实现 INotifyPropertyChanged
接口来获取);实现 INotifyDataErrorInfo
接口时,需要为对象级验证规则涉及的每个属性引发 ErrorsChanged
事件。
需要注意的是, DataForm
和 DataGrid
控件不会显示绑定对象中其字段/列未绑定属性的验证错误,即便对象验证后通过 IDataErrorInfo
或 INotifyDataErrorInfo
接口暴露了这些错误。不过,如果相应的验证规则以验证属性的形式实现,这些控件会显示它们未绑定属性的验证错误。