WPF使用Binding对数据的校验

本文详细介绍了如何在WPF应用中利用ValidationRule实现输入验证,并通过Binding将验证规则与控件关联,确保用户输入的数值在指定范围内。包括XAML代码示例、验证规则实现及与文本框、滑动条的互动效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们通常都会设置对输入的数值进行校验,在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、在输入违法数值时,进度块不动,文本框变红,反映输入值违法


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值