【发布时间】:2010-11-01 02:55:50
【问题描述】:
似乎我制作的 ViewModel 看起来与其他类很像,而且它们似乎需要大量代码重复,例如在我当前的项目中:
-
SmartForm:Model,表示要填写的数据表单,具有以下属性:
- IdCode
- 标题
- 说明
- SmartFormFields 集合
- 等
- SmartFormControlView 查看
-
SmartFormControlViewModel ViewModel
- IdCode
- 标题
- 说明
- SmartFormFields 集合
- 等
所以我的ViewModel与我的Model基本相同,只是具有用于与View绑定的所有OnPropertyChanged功能。
似乎在我重构和扩展这一点时,我对模型所做的每一个小改动,我都必须进行 对 ViewModel 的镜像更改。
这似乎违反了模式的基本规则不要重复自己。
是我错误地实现了 MVVM 模式,还是只是 MVVM 的固有特性,即 Model 和 ViewModel 之间总是存在一对一的重复?
【问题讨论】:
-
我经常想知道同样的事情......除了在我的情况下,我确实选择在我的模型上实现更改通知(对我来说更有意义 - - 它们是存储数据的地方,因此它们会知道数据何时发生变化)。这使得重复更加突出。
-
我的方法是模型应该能够在任何环境中使用,因此如果您想在 ASP.NET MVC 应用程序中使用它们,您不需要更改通知。所以我认为模型上的更改通知会使它们锁定在 WPF 环境中,对吗?
-
为什么不在 SmartFormControlViewModel 中有一个 SmartForm 类的实例,而不是复制字段?
-
不,更改通知不会将您锁定在 WPF 中。在其他环境中它们只是不必要的。 (INotifyPropertyChanged 在 System.dll 中,因此它是核心 .NET Framework 的一部分,而不是任何特定于 WPF 的库的一部分。)但我确实喜欢你的推理——这是我没有想到的。
标签: wpf design-patterns mvvm