爲進行校驗,必須準備一個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(); } }));