WPF使用Binding對數據的校驗

我們通常都會設置對輸入的數值進行校驗,在WPF也一樣,在本示例中,我們使用兩個控件,分別是TextBox1和Slider1,通過文本控件,輸入符合slider的值,如果值不在此範圍則顯示文本框爲紅色,反映輸入值不正確,控件不會因此改變。

1、XAML代碼

<StackPanel>
        <TextBox x:Name="TextBox1" Margin="5"/>
        <Slider x:Name="slider1" Minimum="0" Maximum="100" Margin="5"/>
    </StackPanel>

2、爲了進行校驗,我們準備了一個ValidationRule派生類RangeValidationRule,通過需要實現Validate方法,來對數據進行校驗。把他們分到一個類去寫放映了代碼的業務分佈效率。

寫繼承類之前需要引用using System.Windows.Controls;否則無效,一下是代碼

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

說明值只有在0到100之間是有效的。

3、在窗體構造器裏寫Binding

   //建立綁定,設置源爲slider1
   Binding binding = new Binding("Value") { Source = this.slider1 };
   //更新源等於標記源的屬性
   binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
   //添加校驗規則
   RangeValidationRule rvr = new RangeValidationRule();
   //在此源中增加此規則
   binding.ValidationRules.Add(rvr);
   //將textbox1的文本屬性與綁定源進行設定
   this.TextBox1.SetBinding(TextBox.TextProperty, binding);

4、在輸入正常值時候,進度塊將隨着文本框的數值進行改變


5、在輸入違法數值時,進度塊不動,文本框變紅,反映輸入值違法


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章