• 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

  • 相关阅读:
    AtCoder AGC036C GP 2 (组合计数)
    Luogu P4708 画画 (Burnside引理、组合计数、划分数)
    BZOJ 1488 Luogu P4727 [HNOI2009]图的同构 (Burnside引理、组合计数)
    BZOJ 2655 calc (组合计数、DP、多项式、拉格朗日插值)
    POJ 1430 Binary Stirling Numbers (第二类斯特林数、组合计数)
    BZOJ 4555 Luogu P4091 [HEOI2016/TJOI2016]求和 (第二类斯特林数)
    Luogu P4707 重返现世 (拓展Min-Max容斥、DP)
    LOJ #6358 前夕 (组合计数、容斥原理)
    BZOJ 3622 Luogu P4859 已经没有什么好害怕的了 (容斥原理、DP)
    Java基本的程序结构设计 大数操作
  • 原文地址:https://www.cnblogs.com/langhua/p/2040723.html
Copyright © 2020-2023  润新知