MVVM:从ViewModel中解耦模型

时间:2011-07-08 20:11:37

标签: wpf model unity-container prism viewmodel

我刚刚开始使用Prism和Unity学习WPF MVVM。 将视图与视图模型分离可以很好地工作,但我不知道如何连接我的viewmodel和我的模型。 我觉得在我的viewmodel中创建一个新的EntityObject是不对的。我已经浏览了WAF BookLibrary示例,但它非常笨重,并且在必要部分(视图和视图模型之间的绑定)周围添加了许多额外的东西,并且Prism文档没有说一句话(据我所读)关于viewmodel - 模型交互。

有没有人知道一个很好的资源来解释如何以干净的方式使用viewmodel和模型,还是我可以提供一些建议?

最好的问候

1 个答案:

答案 0 :(得分:10)

每个人都会对此有自己的看法。我个人不介意直接在视图模型中使用模型。对我来说,视图模型的整个想法是以一种可以被视图使用的方式扩展模型。

一个简单的例子就是人物对象,它会有像名字和年龄这样的模型属性。当我进入视图模型阶段时,我可能会向其添加属性,就像在模型本身没有意义的可见性一样。

另一点需要注意的是,我会将模型视为数据,将视图模型视为上下文。因此,您可能拥有一个人的“卡片”视图模型,但您可能还有一个“列表项”视图模型,该模型在不同的上下文中表示相同的模型,具有不同的视图模型特定属性。

我确实倾向于使用相关的接口来创建我的模型并使用控制反转将它们注入到视图模型中,这样我的视图模型实际上唯一知道的是它需要一个IPerson并且它将被提供在构造函数中。

正如我所说,其他人会有不同的想法,一切都是正确的,由你来决定哪一个适合你的需要。