假设我有一个程序必须以两种不同的方式表示一些数据.如果我想通过使用两个不同的ViewModel来实现这一点,那么它们似乎都应该共享Model对象的相同实例.那么在MVVM中使用WPF通常如何实现?
我能想到的一种方法是ViewModel构造函数可以获取相应Model的实例,并且可以在Application.Startup事件的处理程序中完成所有连接.我不记得在我见过的任何一个例子中看到过这个,但我可能错过了它.
到目前为止,似乎大多数情况下,示例只是显示ViewModels自己创建Model类的实例,这在某些情况下可以工作,但对于我的情况似乎不是一个好的解决方案,因为每个ViewModel都会创建它自己的Model类实例.似乎这样也可以消除用不同的模型替换模型的可能性,这可能是单元测试的情况.我猜测依赖注入框架或IoC容器会消除这个问题吗?到目前为止我只使用了手动依赖注入.
在另一个例子中,似乎View创建了Model对象本身并将它们传递给ViewModels,这看起来也不是一个好主意,因为View不应该知道模型的任何内容?
有些例子似乎没有Model类,只有Views和ViewModels.
有没有更好的方法我没有提到?
另外,我应该使用依赖注入框架还是IoC容器?如前所述,我之前并没有真正使用过,我认为这对我目前正在进行的程序的大小来说可能有些过分.如果没有真正深入研究,我可能会弄错.
一般方法是将模型传递给视图模型的构造函数。也许,为了简单起见,您所查看的示例并未显示这一点。因此,如果您有两个使用相同数据(模型)的视图模型,只需在两者中使用相同的模型实例即可。
至于依赖注入和IoC容器,正如你所说,这对于小项目来说是大材小用,但如果你的项目变大,它可能会给你带来很多好处。
| 归档时间: |
|
| 查看次数: |
1318 次 |
| 最近记录: |