博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据绑定(九)Binding的数据校验
阅读量:6423 次
发布时间:2019-06-23

本文共 2021 字,大约阅读时间需要 6 分钟。

原文:

Binding用ValidationRules属性来校验数据的有效性,ValidationRules属性类型是Collection<ValidationRule>,他可以设置多个数据校验条件,ValidationRule是抽象类,使用的时候需要创建它的派生类并实现它的Validate方法,Validate方法的返回值是ValidationResult类型对象,如果校验通过,就把ValidationResult对象的IsValid属性设为true,反之,设为false,并为其ErrorContent属性设置一个合法的消息内容

界面代码

TextBox用于设置滚动条的值,需要对TextBox中的值进行校验,首先需要准备一个校验类

class RangeValidationRule : ValidationRule    {        public override ValidationResult Validate(object value, CultureInfo cultureInfo)        {            double d = 0;            if (double.TryParse(value.ToString(), out d))            {                if ((0 <= d) && (d <= 100))                {                    return new ValidationResult(true, null);                }            }            return new ValidationResult(false, "输入值非法");        }    }
然后在后台代码中建立这样的Binding

Binding binding = new Binding();            binding.Source = slider1;            binding.Path = new PropertyPath("Value");            binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;            RangeValidationRule rvr = new RangeValidationRule();            binding.ValidationRules.Add(rvr);            textBox1.SetBinding(TextBox.TextProperty, binding);

Binding进行校验时的默认行为是认为来自Source的数据始终是正确的,只有来自Target的数据才有可能有问题,为了不让有问题的数据污染Source所以需要校验,所以,Binding只有在Target被外部方法更新时校验数据,而来自Binding的Source数据更新Target时是不会进行校验的。如果想在Target改变Source数据时也进行校验,就需要将验证条件的ValidatesOnTargetUpdated属性设置为true。

修改前台代码为

绑定增加一行代码

Binding binding = new Binding();            binding.Source = slider1;            binding.Path = new PropertyPath("Value");            binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;            RangeValidationRule rvr = new RangeValidationRule();            rvr.ValidatesOnTargetUpdated = true;            binding.ValidationRules.Add(rvr);            textBox1.SetBinding(TextBox.TextProperty, binding);
当滑块拖动到负值时,TextBox显示校验失败

校验失败时,ValidationResult对象携带了一条错误消息,想要显示这条消息,首先在创建Binding时要把Binding对象的NotifyOnValidationError属性设置为true

转载地址:http://ufgra.baihongyu.com/

你可能感兴趣的文章
讲一讲什么叫阻塞非阻塞同步异步
查看>>
选择器补遗
查看>>
C# 实体集合和实体转换成相应的string、XDocument、XElement、XDocument
查看>>
轻松记住大端小端的含义(附对大端和小端的解释)
查看>>
dreamweaver中的 map怎么调用?_制作热点图像区域
查看>>
代码19
查看>>
Win10系列:UWP界面布局进阶5
查看>>
ABP Zero 本地化语言的初始化和扩展
查看>>
转Hibernate 一对多关联的CRUD__@ManyToOne(cascade=(CascadeType.ALL))
查看>>
FCT需求分析
查看>>
开门人和关门人(杭电1234)
查看>>
万能adapter
查看>>
开发指南专题六:JEECG微云高速开发平台代码生成
查看>>
cocos2d-x 游戏优化方案
查看>>
1.3 Quick Start中 Step 6: Setting up a multi-broker cluster官网剖析(博主推荐)
查看>>
remote desktop connection manager
查看>>
开源库RxJava、ButterKnife
查看>>
JDK内置工具jstack(Java Stack Trace)(转)
查看>>
百度之星 / 初赛第二场 B题
查看>>
Http压测工具wrk使用指南
查看>>