【发布时间】:2022-01-13 14:56:23
【问题描述】:
我在 WPF 中遵循了 Microsoft 关于 implementing binding validation 的简短教程,它运行良好。
但是,我需要在视图模型上公开验证结果,以便我的应用程序可以阻止用户前进,但我看不到实现此目的的方法。
我的控件的 XAML 如下,StartDateRule 定义为继承自 ValidationRule 的类
<controls:DateInputBox
Grid.Column="2"
Grid.Row="3"
Height="28"
HorizontalAlignment="Left"
Watermark=""
Width="110"
VerticalAlignment="Center">
<controls:DateInputBox.SelectedDate>
<Binding Path="SelectedDate">
<Binding.ValidationRules>
<local:StartDateRule/>
</Binding.ValidationRules>
</Binding>
</controls:DateInputBox.SelectedDate>
</controls:DateInputBox>
我尝试在我的视图模型中创建StartDateRule 类的实例,并绑定到它。我的想法是我可以在视图模型上公开一些 Validate() 方法,该方法将在规则上调用 Validate() 方法。但我似乎无法创建此绑定。我不确定这是因为我的语法不正确,还是因为不可能。
我已经阅读了很多关于使用INotifyDataErrorInfo 接口的资料,但这似乎有很多 样板代码,我找不到关于此的好的官方文档。
我正在努力实现的目标可能吗?
【问题讨论】:
-
验证规则发生在视图中。输入不会传输到视图模型。您必须捕获视图中的冒泡错误并将某些内容传递给 viewmodel。或者在视图模型中验证
标签: c# wpf validation data-binding binding