博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Silverlight实用窍门系列:57.Silverlight中的Binding使用(二)-数据验证
阅读量:6152 次
发布时间:2019-06-21

本文共 1632 字,大约阅读时间需要 5 分钟。

本文将简单讲述Silverlight中的Binding数据时的数据验证。

    NotifyOnValidationError:是否在出现异常/错误信息的时候激发BindingValidationError事件。

    ValidatesOnExceptions:是否将异常信息作为错误信息显示出来。

    ValidatesOnDataErrors:结合IDataErrorInfo接口以显示错误信息。

    BindingValidationError:这是一个路由事件,当绑定数据的源对象A有错误的时候,抛出异常让此事件接收并且触发,当源对象A没有BindingValidationError事件的时候让其父对象的BindingValidationError事件接收并且触发。

        首先我们写一个用户类,并且在属性中进行简单验证错误时抛出异常如下代码:

public class User {
private string m_UserName; public string UserName {
get { return m_UserName; } set {
if (value.Length < 3) {
throw new Exception("用户名小于3个字符"); } m_UserName = value; } } private string m_UserPwd; public string UserPwd {
get { return m_UserPwd; } set {
if (value.Length < 6) {
throw new Exception("密码长度不能小于6"); } m_UserPwd = value; } } }

 

        然后我们来看Xaml代码演示一个登录时数据绑定的界面:

        最后将User类绑定到前台界面原始,并且描述BindingValidationError事件时将TextBox边框变为红色。

public partial class MainPage : UserControl {
public MainPage() {
InitializeComponent(); } private void canvasUser_BindingValidationError(object sender, ValidationErrorEventArgs e) {
TextBox tb = e.OriginalSource as TextBox; if (e.Action == ValidationErrorEventAction.Added) {
tb.BorderBrush = new SolidColorBrush(Colors.Red); } else if (e.Action == ValidationErrorEventAction.Removed) {
tb.BorderBrush = new SolidColorBrush(Colors.White); } } private void canvasUser_Loaded(object sender, RoutedEventArgs e) {
this.canvasUser.DataContext = new User(); } }

       实现效果如下图,在输入非正确的字符数目的时候会自动提示错误,如需源码请点击 下载。

本文转自程兴亮博客园博客,原文链接:http://www.cnblogs.com/chengxingliang/archive/2012/02/27/2367892.html,如需转载请自行联系原作者
你可能感兴趣的文章
常用限制input的方法
查看>>
IIS7下使用urlrewriter.dll配置
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>
bulk
查看>>
js document.activeElement 获得焦点的元素
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>
JavaWeb学习笔记(十四)--JSP语法
查看>>
【算法笔记】多线程斐波那契数列
查看>>
java8函数式编程实例
查看>>
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>
angularjs表达式中的HTML内容,如何不转义,直接表现为html元素
查看>>
css技巧
查看>>
Tyvj 1728 普通平衡树
查看>>
javascript性能优化
查看>>
多路归并排序之败者树
查看>>
java连接MySql数据库
查看>>
转:Vue keep-alive实践总结
查看>>
深入python的set和dict
查看>>