0

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

我已经转向输入验证。我在我的 ViewModel 中实现 IDataErrorInfo ......这似乎对 TextBox 工作得很好。

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

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

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

你会怎么办?

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

干杯

4

1 回答 1

0

你会怎么办?

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

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

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

于 2013-01-30T11:10:37.377 回答