static未央

博客园 首页 新随笔 联系 订阅 管理

为进行校验,必须准备一个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();
                    }
                }));

 

 

 

posted on 2014-03-11 18:39  abstract未央  阅读(544)  评论(0编辑  收藏  举报