我們通常都會設置對輸入的數值進行校驗,在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、在輸入違法數值時,進度塊不動,文本框變紅,反映輸入值違法