一、概述
我们知道,Binding好比架设在Source和Target之间的桥梁,数据可以借助这个桥梁进行流通。在数据流通的过程中,我们可以在Binding这座桥梁上设置关卡,对数据的有效性进行验证。
二、验证方法
我们利用Binding的ValidationRules(类型为Collection<ValidationRule)对数据进行验证。从它的名称和类型可以得知,我们可以为每个Binding设置多个数据校验条件,每个条件是一个
ValidationRule对象,ValidationRule类是个抽象类,使用的时候,我们需要创建它的派生类并实现它的Validate方法。
Validate方法返回值是ValidationResult类型对象,如果校验通过,需要把ValidationResult对象的IsValid属性设置为true,反之,设置false并为其ErrorContent属性设置一个合适的消息内容,一般情况下是一个字符串。
三、例子
Demo1
假设UI上有一个Slider和一个TextBox,我们以Slider为源,TextBox为Target,Slider的取值范围为0~100,也就是说我们要需要校验TextBox中输入的值是不是在1~100这个范围内。
1 using System.Globalization; 2 using System.Windows; 3 using System.Windows.Controls; 4 5 namespace BindingDemo4ValidationRule 6 { 7 /// <summary> 8 /// Interaction logic for MainWindow.xaml 9 /// </summary> 10 public partial class MainWindow : Window 11 { 12 public MainWindow() 13 { 14 InitializeComponent(); 15 } 16 } 17 public class RangeValidationRule:ValidationRule 18 { 19 public override ValidationResult Validate(object value, CultureInfo cultureInfo) 20 { 21 double myValue = 0; 22 if(double.TryParse(value.ToString(),out myValue)) 23 { 24 if (myValue >= 0 && myValue <= 100) 25 { 26 return new ValidationResult(true, null); 27 } 28 } 29 return new ValidationResult(false, "Input should between 0 and 100"); 30 } 31 } 32 }