WPF 綁定的校驗

爲進行校驗,必須準備一個RangeValidationRule類,該類繼承自ValidationRuleide

該類實現以下:this

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個控件,相應的XAMLspa

<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.基本驗證code

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

2.數據源驗證blog

//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();
                    }
                }));
相關文章
相關標籤/搜索