我正在使用 MVVM 设计模式在 C# WPF 中开发一个项目,由于旧的强制第三方库,该项目仅限于 .NET 4.8。
我最近一直在用户输入验证方面苦苦挣扎,如果我创建一个自定义对象,然后将该对象的属性绑定到视图中的文本框文本属性,如下所示:
class TestObject
{
public double DoubleValue { get; set; }
}
<TextBox Text="{Binding ViewTestObject.DoubleValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
执行此操作时,WPF 会识别属性的类型(例如 double),如果用户输入错误(例如 2;5),则根据
UpdateSourceTrigger
参数值阻止输入或在文本框上显示红色边框,这就是我想要的。
由于此行为似乎是本机编码的,因此我想进一步根据文本框验证状态直接在 xaml 中更改按钮的
IsEnabled
属性,但我无法使其工作。
您可以在此 Github 存储库中找到有关此案例的测试项目:
https://github.com/RoosterBlueWing/TestValidationWPF
那么,我是做错了什么还是根本不可能?
您可以尝试添加ValidationRules,例如:
<TextBox Text="{Binding ViewTestObject.DoubleValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged,ValidationRules ={Your validation type}"/>