zoukankan      html  css  js  c++  java
  • WPFValidationRule 数据验证

    XAML

    <Window x:Class="WpfApplication1.Window1"
        xmlns
    ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x
    ="http://schemas.microsoft.com/winfx/2006/xaml"
        Title
    ="Window1" Height="192" Width="537"
        xmlns:local
    ="clr-namespace:WpfApplication1">

        
    <Window.Resources>
            
    <!--判断规则-->
            
    <local:NumberRangeRule x:Key="numberRangeRule"></local:NumberRangeRule>
        
    </Window.Resources>

        
    <Grid Name="grid" ClipToBounds="False"  Height="129" Width="297">
            
    <Label HorizontalAlignment="Left" Margin="25,53,0,0" Name="label2" Width="49" Height="28" VerticalAlignment="Top">年龄:</Label>
            
    <!--绑定 Error Content 到ToolTip-->
            
    <TextBox Margin="94,50,0,56"   ToolTip="{Binding RelativeSource={RelativeSource self}, Path=(Validation.Errors)[0].ErrorContent}" 
                     Name
    ="txtAge" HorizontalAlignment="Left" Width="101">
                
    <TextBox.Text>
                    
    <!--绑定Age数据 和 判断规则 并设置最大最小值-->
                    
    <Binding Path="Age" UpdateSourceTrigger="PropertyChanged">
                        
    <Binding.ValidationRules>
                            
    <local:NumberRangeRule Min="0" Max="128" />
                        
    </Binding.ValidationRules>
                    
    </Binding>
                
    </TextBox.Text>
            
    </TextBox>
        
    </Grid>
    </Window>

    C#

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;

    using System.ComponentModel;

    namespace WpfApplication1
    {
        
    /// <summary>
        
    /// Window1.xaml 的交互逻辑
        
    /// </summary>
        public partial class Window1 : Window
        {
            
    public Person person;
            
    public Window1()
            {
                InitializeComponent();

                
    //创建示例数据并绑定
                person = new Person();
                person.Name 
    = "kill";
                person.Age 
    = 21;
                
    this.txtAge.DataContext = person;
            }
        }

        
    //数据类要继承INotifyPropertyChanged
        public class Person : INotifyPropertyChanged
        {
            
    public event PropertyChangedEventHandler PropertyChanged;

            
    string name;
            
    public string Name
            {
                
    get { return name; }
                
    set { name = value; }
            }

            
    int age;
            
    public int Age
            {
                
    get { return age; }
                
    set { age = value; }
            }

            
    public Person() { }   
        }

        
    //书写继承ValidationRule的判断规则类
        
    //重写Validate方法完成自己的判断
        public class NumberRangeRule : ValidationRule
        {
            
    int min;
            
    public int Min
            {
                
    get { return min; }
                
    set { min = value; }
            }

            
    int max;
            
    public int Max
            {
                
    get { return max; }
                
    set { max = value; }
            }

            
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
            {
                
    int number;
                
    if (!int.TryParse((string)value, out number))
                {
                    
    return new ValidationResult(false"Invalid number format");
                }

                
    if (number < min || number > max)
                {
                    
    return new ValidationResult(falsestring.Format("Number out of range ({0} - {1})", min, max));
                }

                
    return ValidationResult.ValidResult;
            }
        }

    }
  • 相关阅读:
    Python Virtualenv的使用
    Pycharm常用的设置
    Zabbix学习目录
    DELL R740 Raid10与U盘启动项的配置
    Django
    Django
    Django
    Django
    Django
    Django
  • 原文地址:https://www.cnblogs.com/xh831213/p/1784996.html
Copyright © 2011-2022 走看看