WPF使用Binding对数据的校验

我们通常都会设置对输入的数值进行校验,在WPF也一样,在本示例中,我们使用两个控件,分别是TextBox1和Slider1,通过文本控件,输入符合slider的值,如果值不在此范围则显示文本框为红色,反映输入值不正确,控件不会因此改变。

1、XAML代码

<StackPanel> <TextBox x:Name="TextBox1" Margin="5"/> <Slider x:Name="slider1" Minimum="0" Maximum="100" Margin="5"/> </StackPanel>
2、为了进行校验,我们准备了一个ValidationRule派生类RangeValidationRule,通过需要实现Validate方法,来对数据进行校验。把他们分到一个类去写放映了代码的业务分布效率。

写继承类之前需要引用using System.Windows.Controls;否则无效,一下是代码

class RangeValidationRule:ValidationRule { //需要实现Validate方法 public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) { double d = 0; if (double.TryParse(value.ToString(), out d)) { if (d >= 0 && d <= 100) { return new ValidationResult(true, null); } } return new ValidationResult(false, "Validation Failed"); } }
说明值只有在0到100之间是有效的。

3、在窗体构造器里写Binding

//建立绑定,设置源为slider1 Binding binding = new Binding("Value") { Source = this.slider1 }; //更新源等于标记源的属性 binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; //添加校验规则 RangeValidationRule rvr = new RangeValidationRule(); //在此源中增加此规则 binding.ValidationRules.Add(rvr); //将textbox1的文本属性与绑定源进行设定 this.TextBox1.SetBinding(TextBox.TextProperty, binding);
4、在输入正常值时候,进度块将随着文本框的数值进行改变


5、在输入违法数值时,进度块不动,文本框变红,反映输入值违法


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值