您的位置:首页 > 其它

WPF的数据绑定(五)数据验证

2013-01-05 18:09 302 查看
使用 WPF 数据绑定模型可以将 ValidationRules 与 Binding 对象相关联。
ValidationRule 对象可检查属性的值是否有效。WPF 具有以下两种类型的内置 ValidationRule 对象:
ExceptionValidationRule 检查在更新绑定源属性的过程中引发的异常。
DataErrorValidationRule 对象检查由实现 IDataErrorInfo 接口的对象所引发的错误。
也可以通过从 ValidationRule 类派生和实现 Validate 方法来创建自己的验证规则。

如果用户输入的值无效,则您可能希望在应用程序 UI 上提供一些有关错误的反馈。提供这种反馈的一种方式是将 Validation.ErrorTemplate 附加属性设置为自定义 ControlTemplate。
如果验证过程中任何时候某个 ValidationRule 未通过,绑定引擎就会创建一个 ValidationError 对象并将该对象添加到绑定元素的 Validation.Errors 集合中。绑定引擎在任何给定步骤运行 ValidationRule 对象之前,它会移除在该步骤中添加到绑定元素的 Validation.Errors 附加属性的任何 ValidationError。例如,如果某个 ValidationStep 设置为 UpdatedValue 的 ValidationRule 失败,则下一次进行验证过程时,绑定引擎会先移除该 ValidationError,然后紧接着调用任何将 ValidationStep 设置为 UpdatedValue 的 ValidationRule。

当 Validation.Errors 不为空时,元素的 Validation.HasError 附加属性设置为 true。此外,如果 Binding 的 NotifyOnValidationError 属性设置为 true,则绑定引擎将在该元素上引发 Validation.Error 附加事件。

还应注意,任何方向(目标到源或源到目标)的有效值传输操作都将清除 Validation.Errors 附加属性。

如果绑定具有与其关联的 ExceptionValidationRule 或者其 ValidatesOnExceptions 属性设置为 true 并且在绑定引擎设置源时引发一个异常,则绑定引擎会检查是否有 UpdateSourceExceptionFilter。您可以选择使用 UpdateSourceExceptionFilter 回调来提供用于处理异常的自定义处理程序。如果未对 Binding 指定 UpdateSourceExceptionFilter,绑定引擎就会对异常创建 ValidationError 并将其添加到绑定元素的 Validation.Errors 集合中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: