WPF 绑定验证规则 ValidationRule
前台xaml:
<StackPanel Background="LightBlue"> <TextBox x:Name="txtNum" Margin="5" Text="{Binding Value,ElementName=slider}"/> <Slider x:Name="slider" Maximum="100" Minimum="0" Margin="5"/> </StackPanel>
一般情况下,数值是双向绑定的。在TextBox连输入一个数字,滑块会滑动一段距离,但是输入不合法的数字,比如负数或者超过最大范围,就会显示0。
现在想要输入不合法数字时,边框显示红色。
需要假如验证规则。
声明一个规则类
public class RangeValidationRule : ValidationRule { public override ValidationResult Validate(object value, 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"); } }
继承自ValidationRule。
然后绑定
Binding binding = new Binding("Value") { Source = slider }; //绑定触发条件:属性改变时触发 binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; //绑定验证规则,规则需要继承ValidationRule binding.ValidationRules.Add(new RangeValidationRule()); txtNum.SetBinding(TextBox.TextProperty, binding);
这里使用了Binding的UpdateSourceTrigger和ValidationRule属性。
显示如下:
记录编程的点滴,体会学习的乐趣