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属性。
显示如下:
记录编程的点滴,体会学习的乐趣
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!