我学习了微软关于在WPF中实现绑定验证的简短教程,它运行得很好。
然而,我需要在视图模型上公开验证的结果,这样我的应用程序就可以阻止用户前进,但我看不到实现这一点的方法。
我的控件的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
接口的内容,但这似乎有很多的样板代码,我找不到关于这方面的好的官方文档。
我努力实现的目标可能实现吗?
您不会在视图模型中创建验证规则的实例。如果你有一个视图模型,你应该在那里实现你的应用程序逻辑,这也适用于验证逻辑。
这意味着您应该实现INotifyDataErrorInfo
接口,而不是在视图中使用验证规则。请参阅这篇博客文章,了解有关WPF中数据验证的更多信息。
您将在这里和这里找到一个如何实现接口的示例。