MVVM / 用户控件和视图 = 视图模型约定

4

MVVM Light 的创始人 Laurent 向我介绍了 MVVM,以及一个视图对应一个视图模型的约定。那么对于用户控件来说,有什么经验之谈吗?每个用户控件都需要一个 ViewModel 吗?当创建一个利用多个用户控件的 View 时,是否需要创建另一个 ViewModel 来聚合用户控件的视图模型?

感谢您提供的意见。

Richard

2个回答

4
在我的MVVM项目中,我倾向于像你所建议的那样:每个UserControl一个ViewModel,再使用另一个ViewModel将它们聚合在一起。这个聚合ViewModel通常会成为窗口的ViewModel,而不是另一个UserControl的ViewModel。尽管这并非必要,但可能更多是由于我的偏好和历史以及我主要在WPF中工作的原因。
我没有单独的ViewModel来创建非常特定可重用的UserControl,比如具有特定视觉效果的按钮或自定义滑块。
这反映在我的项目结构中 - 我有两个标准文件夹供UserControl(没有ViewModel)和View使用,这些View可以是窗口或UserControl,并且始终有ViewModel。

2
每个用户控件都需要一个ViewModel吗?
通常来说是的。一个UserControl通常只是另一个View。这意味着每个UserControl都需要一个ViewModel,其中“父”VM将其聚合起来(以与聚合数据的View相匹配)。
然而,也有例外情况:如果UserControl只是作为一个自定义控件,而不是绑定到某些特定业务逻辑上,那么它可能是“纯视图”。在这种情况下,您可能不想为该控件创建任何VM,因为它完全是View。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接