如何实现通用控件验证?

时间:2013-01-30 11:06:57

标签: c# wpf mvvm idataerrorinfo

我最近一直试图养成在项目中使用MVVM设计模式的习惯,目的是解耦应用程序中的各个模块,使其适合单元测试。

我已进入输入验证。我在我的ViewModel中实现了IDataErrorInfo ...这似乎对TextBox非常有用。

我目前正在尝试研究如何在ListBox控件上实现IDataErrorInfo,该控件绑定到自定义对象的ObservableCollection。问题是每一行(ListBoxItem)直接更新模型,因此我的ViewModel中的IDataErrorInfo实现被绕过。所以我看到它的方式我可以做两件事之一 -

1)创建一个辅助ViewModel(表示ListBoxItems),用于填充Observable Collection并在其上实现IDataErrorInfo。

2)在我的模型上实现IDataErrorInfo。但是,由于ViewModel主要用于从我的模型中继引用,因此可能会考虑将我的所有IDataErrorInfo实现移动到我的Model类中以保持一致性......

你会做什么?

另外......有关创建可重用验证方法的建议,我可以轻松应用于任何类型的控件吗?

干杯

1 个答案:

答案 0 :(得分:0)

  

你会做什么?

第一个选项当然是为列表项创建一个辅助视图模型。您不应在模型中实现IDataErrorInfo,因为这是特定于UI的功能。

  

可重复使用的验证方法,我可以轻松应用于任何类型的控件

你误解了MVVM。 IDataErrorInfo用于视图模型验证,而不是控件验证。