一、概述

我们知道,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 }
View Code

相关文章:

  • 2022-12-23
  • 2021-06-09
  • 2021-09-05
  • 2021-09-09
  • 2022-12-23
  • 2022-12-23
  • 2021-12-31
  • 2021-11-05
猜你喜欢
  • 2022-12-23
  • 2021-08-11
  • 2022-02-12
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案