zoukankan      html  css  js  c++  java
  • WPF 绑定的校验

    为进行校验,必须准备一个RangeValidationRule类,该类继承自ValidationRule

    该类实现如下:

    class RangeValidationRule : ValidationRule
        {
            public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
            {
                double d;
                if (double.TryParse(value.ToString(), out d))
                {
                    if (d >= 0 && d <= 100)
                    {
                        return new ValidationResult(true, null);
                    }
                }
                return new ValidationResult(false, "Validation Failed");
            }
        }

    界面上仍2个控件,相应的XAML

    <Grid>
            <TextBox Height="23" HorizontalAlignment="Left" Margin="84,63,0,0" Name="textBox1" VerticalAlignment="Top" Width="336" IsEnabled="True"/>
            <Slider Name="slider1" Height="23" HorizontalAlignment="Left" Margin="84,125,0,0" VerticalAlignment="Top" Width="336" Maximum="110"  Minimum="-1"/>
        </Grid>
    

      

    1.基本验证

      //1.基本验证
                binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
                binding.ValidationRules.Add(new RangeValidationRule());
                this.textBox1.SetBinding(TextBox.TextProperty, binding);

    2.数据源验证

    //2.验证source
                binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
                binding.ValidationRules.Add(new RangeValidationRule() 
                {
                    ValidatesOnTargetUpdated = true
                });
                binding.NotifyOnValidationError = true;
                this.textBox1.SetBinding(TextBox.TextProperty, binding);

    3.添加路由事件

      this.textBox1.AddHandler(Validation.ErrorEvent, new RoutedEventHandler((sender, e) =>
                    {
                        if (Validation.GetErrors(this.textBox1).Count > 0)
                        {
                            this.textBox1.ToolTip = Validation.GetErrors(this.textBox1)[0].ErrorContent.ToString();
                        }
                    }));
  • 相关阅读:
    利用Flask中的werkzeug.security模块加密
    logging
    python后端架构(转)
    访问一个网页的全过程
    微服务优缺点
    HTTP协议通信原理 与常见报错信息
    SSH与ansible 部署方法与核心模块简介
    linux 普通用户批量创建账户与密码
    三次握手与4次挥手简单说明
    sed 命令简介
  • 原文地址:https://www.cnblogs.com/kakaliush/p/3594231.html
Copyright © 2011-2022 走看看