我最近一直试图养成在项目中使用MVVM设计模式的习惯,目的是解耦应用程序中的各个模块,使其适合单元测试。
我已进入输入验证。我在我的ViewModel中实现了IDataErrorInfo ...这似乎对TextBox非常有用。
我目前正在尝试研究如何在ListBox控件上实现IDataErrorInfo,该控件绑定到自定义对象的ObservableCollection。问题是每一行(ListBoxItem)直接更新模型,因此我的ViewModel中的IDataErrorInfo实现被绕过。所以我看到它的方式我可以做两件事之一 -
1)创建一个辅助ViewModel(表示ListBoxItems),用于填充Observable Collection并在其上实现IDataErrorInfo。
2)在我的模型上实现IDataErrorInfo。但是,由于ViewModel主要用于从我的模型中继引用,因此可能会考虑将我的所有IDataErrorInfo实现移动到我的Model类中以保持一致性......
你会做什么?
另外......有关创建可重用验证方法的建议,我可以轻松应用于任何类型的控件吗?
干杯
答案 0 :(得分:0)
你会做什么?
第一个选项当然是为列表项创建一个辅助视图模型。您不应在模型中实现IDataErrorInfo
,因为这是特定于UI的功能。
可重复使用的验证方法,我可以轻松应用于任何类型的控件
你误解了MVVM。 IDataErrorInfo
用于视图模型验证,而不是控件验证。