【发布时间】:2013-02-18 10:10:00
【问题描述】:
在我当前的项目中,我必须处理 WPF 表单中的数据验证。我的表单位于 ResourceDictionnary 的 DataTemplate 中。我可以通过两个按钮来保存和加载表单中的数据,这两个按钮可以序列化和反序列化数据(通过两个DelegateCommand)。
如果我的表单的某个字段为空或无效,则保存按钮将被禁用。由于 UpdateSourceTrigger 属性,每次更改时都会检查一个字段。这就是为什么我需要在我的 C# 代码中知道某个字段是否无效以更新我的保存命令。
目前,我在我的 XAML 绑定中使用 ExceptionValidationRule,我想知道这是否是一个好习惯。我无法实现 ValidationRule,因为我需要在我的 C# 代码中知道字段是否无效,以更新保存命令(启用或禁用保存按钮)。
<TextBox>
<Binding Path="Contact.FirstName" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<ExceptionValidationRule/>
</Binding.ValidationRules>
</Binding>
</TextBox>
在这个blog,我们可以阅读:
在 Setter 中引发异常并不是一个很好的方法,因为这些属性也是由代码设置的,有时可以暂时将其保留为错误值。
我已经阅读了这个post,但我不能使用它,我的 TextBox 在 DataTemplate 中,我不能在我的 C# 代码中使用它们。
所以,我想知道是否应该更改我的数据验证并且不要使用 ExceptionValidationRule。
【问题讨论】:
-
您尝试过 IDataErrorInfo 和 MVVM 吗?
-
是的,我已经在使用 MVVM。 IDataErrorInfo 似乎是一个很好的解决方案...会比 ExceptionValidationRule 更好吗?
-
我会说是的,但它也有它的缺点。特别是如果您的大众汽车中有其他类型的属性,然后是字符串。我们在项目中使用 idataerrorinfo 并且它有效
标签: wpf validation data-binding validationrule