zoukankan      html  css  js  c++  java
  • Siverlight异步数据验证二

    本文介绍的是DataAnnotation验证机制,利用RIA service提供的验证机制,

    需要引入名称空间:

    using System.ComponentModel.DataAnnotations;

    本文以填写用户名和密码为例简单说明必填验证的方法.

    验证类如下:

     1         private string _userName;
     2         [Required(ErrorMessage = "必填选项")]
     3         public string UserName
     4         {
     5             get { return _userName; }
     6             set
     7             {
     8                 if (_userName!=value)
     9                 {
    10                     //_userName = value;
    11                     //NotifyPropertyChanged("UserName");
    12 
    13                     var tmpValidator = new ValidationContext(thisnullnull);
    14                     tmpValidator.MemberName = "UserName";
    15                     Validator.ValidateProperty(value, tmpValidator);
    16                     _userName = value; 
    17 
    18                 }
    1920 
    21             }
    22         }

    客户端设置如下:

    第一步引入:

    xmlns:local="clr-namespace:SilverlightApplication2"

    第二步

    <local:User x:Key="userDataContext"/>

    第三步绑定数据源

    1         <TextBox Grid.Column="1" Height="30" HorizontalAlignment="Left" Margin="28,57,0,0" Name="textBox1" DataContext="{Binding Source={StaticResource userDataContext}}" Text="{Binding UserName,Mode=TwoWay,NotifyOnValidationError=True,ValidatesOnExceptions=True}" VerticalAlignment="Top" Width="158" />
    2         <TextBox Height="30" HorizontalAlignment="Left" Margin="28,55,0,0" Name="textBox2"  DataContext="{Binding Source={StaticResource userDataContext}}" Text="{Binding Password,Mode=TwoWay,NotifyOnValidationError=True,ValidatesOnExceptions=True}" VerticalAlignment="Top" Width="158" Grid.Column="1" Grid.Row="1" />

    第四步,捕获

     1         private void LayoutRoot_BindingValidationError(object sender, ValidationErrorEventArgs e)
     2         {
     3             if (e.Action == ValidationErrorEventAction.Added)
     4             {
     5                 (e.OriginalSource as Control).Background = new SolidColorBrush(Colors.Yellow);
     6                 tbMessage.Text = e.Error.Exception.Message;
     7             }
     8 
     9             if (e.Action == ValidationErrorEventAction.Removed)
    10             {
    11                 (e.OriginalSource as Control).Background = new SolidColorBrush(Colors.White);
    12                 tbMessage.Text = "";
    13             }
    14         }

    效果如下:

    下载Demo

  • 相关阅读:
    关键字与标识符
    JAVA 程序的基本语法
    第一个java程序中文乱码以及如何解决
    第一个java程序以及java的运行机制
    java中求余%与取模floorMod的区别
    Volley 框架解析(二)--RequestQueue核心解读
    Volley 源码解析
    Android之Activity系列总结(三)--Activity的四种启动模式
    Android之Activity系列总结(二)--任务和返回栈
    Android之Activity系列总结(一)--Activity概览
  • 原文地址:https://www.cnblogs.com/langhua/p/2040723.html
Copyright © 2011-2022 走看看