无废话WPF系列10: Binding对数据的检验

简介:

设置Binding的ValidationRules属性对Binding进行检验

1
2
3
< StackPanel >
        < TextBox  x:Name="txtAge" FontSize="30" Foreground="Red"></ TextBox >
        < TextBlock  x:Name="errorSummary" FontSize="30" Foreground="Red"></ TextBlock >
1
</ StackPanel >

 

后台代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public  partial  class  MainWindow : Window
     {
         
         public  MainWindow()
         {
             InitializeComponent();
             Person p = new  Person { Age = 20, Name = "Tom"  };
             Binding binding = new  Binding( "Age" ) { Source = p };
 
             binding.NotifyOnValidationError = true ;
 
             binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
             RangeValidationRule rv = new  RangeValidationRule();
             binding.ValidationRules.Add(rv);
             this .txtAge.SetBinding(TextBox.TextProperty, binding);
 
             this .txtAge.AddHandler(Validation.ErrorEvent, new  RoutedEventHandler( this .ValidationError));
         }
 
         void  ValidationError( object  sender, RoutedEventArgs e)
         {
             if  (Validation.GetErrors( this .txtAge).Count > 0)
             {
                 this .txtAge.ToolTip = Validation.GetErrors( this .txtAge)[0].ErrorContent.ToString();
                 this .errorSummary.Text = Validation.GetErrors( this .txtAge)[0].ErrorContent.ToString();
1
2
3
4
5
6
                 // You can do everything here when validation error occurs
             }
         }
         
     }
}

 

image

 

同样,我们在XAML里也可以设置验证

1
2
3
4
5
6
7
8
9
10
< StackPanel >
         < TextBox  x:Name="txtAge" FontSize="30" Foreground="Red"   Validation.Error="txtAge_Error">
             < Binding  NotifyOnValidationError="True" Path="Age" UpdateSourceTrigger="PropertyChanged">
                 < Binding.ValidationRules >
                     < local:RangeValidationRule ></ local:RangeValidationRule >
                 </ Binding.ValidationRules >
             </ Binding >
         </ TextBox >
         < TextBlock  x:Name="errorSummary" FontSize="30" Foreground="Red"></ TextBlock >
</ StackPanel >

 

后台代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public  partial  class  MainWindow : Window
     {       
         public  MainWindow()
         {
             InitializeComponent();
             Person p = new  Person { Age = 20, Name = "Tom"  };
             this .DataContext = p;          
         }       
         private  void  txtAge_Error( object  sender, ValidationErrorEventArgs e)
         {
             if  (Validation.GetErrors( this .txtAge).Count > 0)
             {
                 this .txtAge.ToolTip = Validation.GetErrors( this .txtAge)[0].ErrorContent.ToString();
 
                 this .errorSummary.Text = Validation.GetErrors( this .txtAge)[0].ErrorContent.ToString();
                 // You can do everything here when validation error occurs
             }
         }       
}
本文转自敏捷的水博客园博客,原文链接http://www.cnblogs.com/cnblogsfans/archive/2011/02/19/1958646.html如需转载请自行联系原作者

王德水
相关文章
|
3月前
|
开发框架 前端开发 JavaScript
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(10) -- 在DataGrid上直接编辑保存数据
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(10) -- 在DataGrid上直接编辑保存数据
|
3月前
|
传感器 C# 监控
硬件交互新体验:WPF与传感器的完美结合——从初始化串行端口到读取温度数据,一步步教你打造实时监控的智能应用
【8月更文挑战第31天】本文通过详细教程,指导Windows Presentation Foundation (WPF) 开发者如何读取并处理温度传感器数据,增强应用程序的功能性和用户体验。首先,通过`.NET Framework`的`Serial Port`类实现与传感器的串行通信;接着,创建WPF界面显示实时数据;最后,提供示例代码说明如何初始化串行端口及读取数据。无论哪种传感器,只要支持串行通信,均可采用类似方法集成到WPF应用中。适合希望掌握硬件交互技术的WPF开发者参考。
68 0
|
3月前
|
数据处理 开发者 C#
WPF数据绑定实战:从零开始,带你玩转数据与界面同步,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用开发中,数据绑定是核心技能之一,它能实现界面元素与数据源的同步更新。本文详细介绍了WPF数据绑定的概念与实现方法,包括属性绑定、元素绑定及路径绑定等技术,并通过示例代码展示了如何创建数据绑定。通过数据绑定,开发者不仅能简化代码、提高可维护性,还能提升用户体验。无论初学者还是有经验的开发者,都能从中受益,更好地掌握WPF数据绑定技巧。
72 0
|
3月前
|
开发框架 前端开发 搜索推荐
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(4) -- 实现DataGrid数据的导入和导出操作
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(4) -- 实现DataGrid数据的导入和导出操作
|
3月前
|
开发框架 .NET C#
WPF/C#:显示分组数据的两种方式
WPF/C#:显示分组数据的两种方式
56 0
|
3月前
|
XML C# 数据格式
WPF/C#:如何将数据分组显示
WPF/C#:如何将数据分组显示
37 0
|
3月前
|
C# Windows
WPF/C#:如何显示具有层级关系的数据
WPF/C#:如何显示具有层级关系的数据
51 0
|
存储 自然语言处理 C#
WPF技术之Binding
WPF(Windows Presentation Foundation)是微软推出的一种用于创建应用程序用户界面的框架。Binding(绑定)是WPF中的一个重要概念,它用于在界面元素和数据源之间建立关联。通过Binding,可以将界面元素(如文本框、标签、列表等)与数据源(如对象、集合、属性等)进行绑定,从而实现数据的双向传递和同步更新。
273 2
WPF技术之Binding
|
12月前
|
算法 C# UED
浅谈WPF之控件模板和数据模板
WPF不仅支持传统的Windows Forms编程的用户界面和用户体验设计,同时还推出了以模板为核心的新一代设计理念。在WPF中,通过引入模板,将数据和算法的“内容”和“形式”进行解耦。模板主要分为两大类:数据模板【Data Template】和控件模板【Control Template】。
195 8
WPF-Binding问题-模板样式使用Binding TemplatedParent与TemplateBinding区别
WPF-Binding问题-模板样式使用Binding TemplatedParent与TemplateBinding区别
207 0