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属性。

 

显示如下:

 

posted @   RookieCoderAdu  阅读(454)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示