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();
                        }
                    }));
  • 相关阅读:
    hibernate10--命名查询
    mybatis13--2级缓存
    mybatis12--一级缓存
    hibernate09--连接查询
    hibernate08--OpenSessionInView
    mybatis11--多对多关联查询
    mybatis10--自连接多对一查询
    mybatis09--自连接一对多查询
    mybatis08--关联查询多对一
    Oracle job启动与关闭
  • 原文地址:https://www.cnblogs.com/kakaliush/p/3594231.html
Copyright © 2011-2022 走看看