wpf binging 数据的转换与验证

Posted xiongyang123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf binging 数据的转换与验证相关的知识,希望对你有一定的参考价值。

1.数据的验证,有时候需要验证同步的数据是否正常

 需要派生一个类 ValidationRule

 技术图片

技术图片

再把这个类指定给binging 进行验证

 技术图片

在这里如果验证不通过 textbox就会变成红色并且发出警告数据将不会同步到数据源,但是警告UI并不可见 需要添加事件暴露出来 

默认验证只对 UI改变数据源才出发验证,如果想 数据源改变UI也触发验证 

技术图片

如果想要 把验证错误以后报的错误,显示出来,需要添加 路由事件,路由事件会一直向上传播,如果被每个函数处理完成,消息就会终止 

所以想捕获这条消息并且显示出来,需在textbox 或者他的父控件上 添加路由事件 如下图

技术图片

技术图片

需要先把binging的 NotifyOnValidationError 设置成true 让消息能生成

 然后在 textbox1上 添加路由事件 即可 

2.数据转换 

   有时候需要对binging的双方做数据转换,比如 textbox 的 text属性 和 Checkbox checkd 属性 绑定 ,在textbox text属性 等于"123" checkbox checked 就设置成true 这种需要用到数据转换

需要实现接口 Ivalueconverter   它的定义如下

技术图片

Convert 和 ConvertBack 相对  数据源转成UI    UI转换成数据源 分别需要怎么转换 

 value代表 当前值 

 

以上是关于wpf binging 数据的转换与验证的主要内容,如果未能解决你的问题,请参考以下文章

Wpf binging

WPF:解决数据验证ValidationRule与按钮Canexcute联动的问题

WPF数据验证

检测 WPF 验证错误

WPF 数据绑定和验证规则最佳实践

WPF 数据验证中的绑定失败