zoukankan      html  css  js  c++  java
  • wpf验证方法总结

    一.两步实现验证

    (1)实现INotifyPropertyChanged接口,并为验证的属性添加需要验证的元数据

     

    [StringLengthValidator(1, 10, MessageTemplate = "First Name must be between 1 and 15 characters")]
    public string FirstName
    {
        get { return this.firstName; }
        set
        {
            this.firstName = value;
            this.OnPropertyChanged("FirstName");
        }
    }

     

    (2)在前端使用Validizor控件,为后端验证显示错误

    <Validizor Source="{Binding FirstName}"/>
    <TextBox Text="{Binding FirstName,UpdateSourceTrigger=PropertyChanged}"/>
     
    二.使用EnterpriseLibrary验证组

    (1)指定元数据Ruleset属性

    [StringLengthValidator(1, 20, MessageTemplate = "Last Name must be between 1 and 20 characters", Ruleset = "Default")]
    public string LastName
    {
        get { return this.lastName; }
        set
        {
            this.lastName = value;
            this.OnPropertyChanged("LastName");
        }
    }

    (2)前端控件同时指定Ruleset属性

    <Validizor Source="{Binding LastName}" Ruleset="Default">
     
    三.wpf内置验证的缺陷
    (1)ui错误无法变更,验证的不仅仅只是TextBox(3.5 sp1 可以把错误信息转嫁)

    wpf内置验证的做法,自定义ValidationRule

    error1

    (2)若使用了内置验证做法,控件的验证将会失效

    四.两个属性以上的验证

     

    (1)单一的元数据标签无法做到,需要写额外的方法进行验证

     

    (2)使用HasSelfValidation元数据标签验证对象

    [HasSelfValidation]
    public class Person2 : INotifyPropertyChanged
    {
    }

    (3)添加验证方法

    [SelfValidation(Ruleset = "Default")]
    public void ValidateDefault(ValidationResults results)
    {
    
    }

    (4)针对特定属性来验证

    (4)-1 实行IPropertyChangedName接口,根据进来的属性进行判断,可以填写多个方法用于区分

    [SelfValidation(Ruleset = "Default")]
    public void ValidateDefault(ValidationResults results)
    {
        switch (this.PropertyChangedName)
        {
            case "FirstName":
    
                break;
        }
    }
     
    [SelfValidation(Ruleset = "Default")]
    public void ValidateDefault(ValidationResults results)
    {
        switch (this.PropertyChangedName)
        {
            case "LastName":
    
                break;
        }
    }

    (5)前端控件指定

  • 相关阅读:
    常用正则表达式
    C#链接常见数据库的方法
    [转]hibernate分页原理
    2020hdu多校第一场比赛及补题
    2020hdu多校第四场比赛及补题
    2020hdu多校第五场比赛及补题
    2020hdu多校第三场比赛及补题
    2020hdu多校第二场比赛及补题
    第二次vj团队赛补题
    字符串距离问题
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/1274934.html
Copyright © 2011-2022 走看看