一、MVVM表单验证:
表单验证是MVVM体系中的重要一块。而绑定除了推动 Model-View-ViewModel (MVVM) 模式松散耦合逻辑、数据和 UI定义的关系之外,还为业务数据验证方案提供强大而灵活的支持。WPF 中的数据绑定机制包括多个选项,可用于在创建可编辑视图时校验输入数据的有效性。常见的表单验证机制有如下几种:
验证类型说明:
(1)Exception 验证通过在某个 Binding 对象上设置 ValidatesOnExceptions 属性,如果源对象属性设置已修改的值的过程中引发异常,则抛出错误并为该 Binding 设置验证错误。
(2)ValidationRule 验证Binding 类具有一个用于提供 ValidationRule 派生类实例的集合的属性。这些ValidationRules 需要覆盖某个 Validate 方法,该方法由 Binding 在每次绑定控件中的数据发生更改时进行调用。如果 Validate 方法返回无效的 ValidationResult 对象,则将为该 Binding 设置验证错误。
(3)IDataErrorInfo 验证通过在绑定数据源对象上实现 IDataErrorInfo 接口并在 Binding 对象上设置ValidatesOnDataErrors 属性,Binding 将调用从绑定数据源对象公开的IDataErrorInfo API。如果从这些属性调用返回非 null 或非空字符串,则将为该 Binding 设置验证错误。
二、我们在使用 WPF 中的数据绑定来呈现业务数据时,通常会使用 Binding 对象在目标控件的单个属性与数据源对象属性之间提供数据管道。如果要使得绑定验证有效,首先需要进行 TwoWay 数据绑定。
这表明,除了从源属性流向目标属性以进行显示的数据之外,编辑过的数据也会从目标流向源。这就