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)前端控件指定

  • 相关阅读:
    14 Longest Common Prefix
    11. Container With Most Water
    9. Palindrome Number
    8. String to Integer (atoi)
    7. Reverse Integer
    5. Longest Palindromic Substring
    4. Median of Two Sorted Arrays
    tableViewCell中添加webView,cell自适应webView高度,解决死循环的简单办法
    ASIHTTPRequest实现断点下载
    如何在iOS中使用Block
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/1274934.html
Copyright © 2011-2022 走看看