Silverlight实例教程 - Validation数据验证基础属性和事件(转载)
- Silverlight实例教程 - Validation数据验证开篇
- Silverlight实例教程 - Validation数据验证基础属性和事件
- Silverlight实例教程 - Validation数据验证DataAnnotation机制和调试技巧
- Silverlight实例教程 - Validation客户端同步数据验证
- Silverlight实例教程 - Validation服务器端异步数据验证
- Silverlight实例教程 - Validation用户提交数据验证捕获
- Silverlight实例教程 – Datagrid,Dataform数据验证和ValidationSummary
- Silverlight实例教程 - 自定义扩展Validation类,验证框架的总结和建议
上篇介 绍了Silverlight的Validation数据验证的好处和概述,其中了解到Silverlight数据验证方法可以被抽象为语法验证和语义验 证,其中前者是通过数据类型定义对比验证,而后者是通过当前输入数据根据特定数据限制代码进行验证。本篇将在以上抽象方法的基础上结合实例,介绍 Silverlight Validation数据验证类中常用属性和方法。
本篇,我们将创建一个新的实例项目,SilverlightValidationDemo。

在MainPage,创建简单的用户交互界面:

另外需要准备一个简单的数据成员类,方便随后的演示:

在实例演示前,我们仍旧需要先学习一下Silverlight的Validation数据验证框架基础属性和事件,首先需要了解的是:
BindingValidationError事件
该事件是一个路由事件,当数据验证错误出现时,将绑定该错误到数据源;也可以简单的理解为绑定错误到数据源的一个行为。该事件可在控件本身调 用,也可在其父控件中调用。例如,在TextBox中,可以声明调用BindingValidationError,或者可以该TextBox的父容器控 件Grid,StackPanel中调用BindingValidationError事件。这里需要注意的是,如果在Silverlight的MVVM 设计模式下,仅在被验证的控件本身激活BindingValidationError事件,才能正常的被UI捕获到错误信息,不支持在父控件中对 BindingValidationError事件进行调用。
为了保证Validation的灵活性,微软同时提供了相关属性,来控制BindingValidationError事件的调用。NotifyOnValidationError和ValidatesOnExceptions属性。
NotifyOnValidationError属性
该属性的功能,是当验证错误出现时是否激活BindingValidationError事件;该属性是Silverlight独有的验证属性之一,经常和ValidatesOnExceptions属性配合使用。
ValidatesOnExceptions属性
该属性的功能,数据绑定引擎是否捕获显示异常错误作为验证错误。简单的理解,在控件绑定数据时,出现数据源异常抛出,或者数据类型转换时异常抛 出,是否作为Validation验证显示在客户端。如果是True,则会按照Validation传统的处理方式,弹出一个红色说明标签,内容是异常错 误信息,反之,则不捕获异常作为Validation。
对于Silverlight开发新手而言,初次看到以上概念,会有混淆,请继续看下面实例,结合实例来理解以上的属性和事件使用方法。
首先,我们在MainPage中,将我们起初定义的User类添加作为一个静态数据源:
对于控件数据绑定,在Visual Studio中可以通过视图设定,也可以直接敲入代码设定,这里,我们使用视图的方法,减少代码输入量,在MainPage中,选中txtUserName文本框,右键选择属性。

在属性框中,设置绑定数据源:

选择Common - DataContext,然后选择“Apply Data Binding.." 选择数据源:

这里,数据源可以选择外部数据源,也可以选择Element绑定源,我们则使用StaticResource静态数据源,也就是我们刚才创建的UserDataContext。

选中后,绑定数据源已经完成,则需要设置控件绑定字段设置,选择Common - Text属性。

然后选择 Apply Data Binding...,进入后可以看到,数据源,已经绑定为“DataContext - User”,而数据源中的成员名称已经被自动列出。

我们需要指定绑定成员名称。

然后,选择“Options”,在选项中,选中“NotifyOnValidationError”和“ValidatesOnExceptions”。

这样控件绑定设置已经完成了,这时,可以切换到Xaml代码界面查看一下当前txtUserName的代码可以发现,Visual Studio 2010已经自动生成了绑定代码,如下:
现在,我们在name数据成员属性中,添加简单的判断代码:
这样一个简单的Validation数据验证功能就完成了。
大家可以试着将ValidatesOnExceptions=True代码设为False,看看是否还能捕获异常验证?下面,看看
BindingValidationError事件和NotifyOnValidationError属性的应用,我们添加一个TextBlock控件,
用来显示验证异常信息。
在MainPage中的LayoutRoot布局控件中,添加BindingValidationError事件。
后台定义:

Silverlight实例教程 - Validation数据验证基础属性和事件(转载)的更多相关文章
- Silverlight实例教程 - Validation数据验证DataAnnotation机制和调试技巧(转载)
Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...
- Silverlight实例教程 - Validation数据验证开篇
Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...
- Silverlight实例教程 - Validation用户提交数据验证捕获(转载)
Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...
- Silverlight实例教程 - Validation服务器端异步数据验证(转载)
摘要:本 篇实例,我们仍旧使用SilverlightValidationDemo项目,为了不和过去的验证方法冲突,这里我们创建一个新的数据成员类 Staff,该类实现INotifyDataErrorI ...
- Silverlight实例教程 - Validation客户端同步数据验证(转载)
摘要:在Silverlight 4中,Silverlight Validation有相对的改进,本篇将介绍Silverlight 4中新加入的验证机制功能,IDataErrorInfo客户端同步验证机 ...
- Silverlight实例教程 - 自定义扩展Validation类,验证框架的总结和建议(转载)
Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...
- Silverlight实例教程 – Datagrid,Dataform数据验证和ValidationSummary(转载)
Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...
- avalon2学习教程12数据验证
avalon2砍掉了不少功能(如ms-include,ms-data),腾出空间加了其他更有用的功能.数据验证就是其中之一.现在avalon2内置的验证指令是参考之前的oniui验证框架与jquery ...
- Silverlight之我见——DataGrid数据验证
<UserControl x:Class="DataValidationSample.MainPage" xmlns="http://schemas.microso ...
随机推荐
- POJ1386Play on Words(欧拉回路)
Play on Words Time Limit: 1000MS Memory L ...
- 10、Django实战第10天:找回密码
今天完成的功能是:用户忘记密码后,通过注册邮箱重置密码... 首先还是把前端页面准备好,把forgetpwd.html复制到templates目录下 编辑users.views.py,创建一个忘记密码 ...
- thinkpad win8.1 无线连接受限
把博通的驱动回滚到6.30.223.102就好了
- luogu P1215 [USACO1.4]母亲的牛奶 Mother's Milk
题目描述 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的.有时,农民把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了 ...
- 【找规律】Codeforces Round #392 (Div. 2) C. Unfair Poll
C. Unfair Poll time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- 【字符串哈希】【BKDRhash】【Rabin-Karp算法】模板
#include<cstdio> #include<iostream> #include<cstring> #include<string> #incl ...
- 【费用流】bzoj3280 小R的烦恼
类似bzoj1221 http://www.cnblogs.com/autsky-jadek/p/4174087.html 只不过大学有多个,所以我们另开一个节点汇总所有'S->大学'的边,然后 ...
- Swift中结合使用枚举与Switch
定义: 用法:
- Linux下使用Shell过滤重复文本(转)
ffffffffffffffffff ffffffffffffffffff eeeeeeeeeeeeeeeeeeee fffffffffffffffffff eeeeeeeeeeeeeeeeeeee ...
- java中的注解详解和自定义注解
一.java中的注解详解 1.什么是注解 用一个词就可以描述注解,那就是元数据,即一种描述数据的数据.所以,可以说注解就是源代码的元数据.比如,下面这段代码: @Override public Str ...