【发布时间】:2011-07-03 05:06:44
【问题描述】:
MVVM 的 Laurent 光荣向我介绍了 MVVM,一个视图的约定有一个视图模型。那么用户控件的经验法则是什么?每个用户控件一个 ViewModel?在创建利用多个用户控件的视图时,您是否创建另一个视图模型来聚合用户控件视图模型?
提前感谢您的意见。
理查德
【问题讨论】:
标签: silverlight-4.0 user-controls mvvm-light
MVVM 的 Laurent 光荣向我介绍了 MVVM,一个视图的约定有一个视图模型。那么用户控件的经验法则是什么?每个用户控件一个 ViewModel?在创建利用多个用户控件的视图时,您是否创建另一个视图模型来聚合用户控件视图模型?
提前感谢您的意见。
理查德
【问题讨论】:
标签: silverlight-4.0 user-controls mvvm-light
在我的 MVVM 项目中,我倾向于按照您的建议进行操作:每个 UserControl 一个 ViewModel,另一个 ViewModel 将所有这些聚合在一起。
聚合的 ViewModel 通常是窗口的 ViewModel 而不是另一个 UserControl - 尽管这不是必需的,而且很可能是我的偏好和历史以及我主要在 WPF 中工作的事实的结果。
我没有用于 UserControl 的单独 ViewModel 的一个地方是我创建了非常具体的可重用 UserControl - 例如具有特定视觉效果的按钮或自定义滑块。
这反映在我的项目结构中 - 我有两个标准文件夹用于 UserControls(没有 ViewModels)和 Views,它们是 Windows 或 UserControls,并且总是有 ViewModels。
【讨论】:
每个用户控件一个 ViewModel?
是的,一般来说。 UserControl 通常只是另一个视图。这通常意味着每个 UserControl 都有一个 ViewModel,并有一个“父”VM 聚合它(与聚合数据的 View 匹配)。
但也有例外:如果 UserControl 真的只是一个自定义控件,而不是绑定到特定业务的东西,那么它可能是“纯视图”。在这种情况下,您可能根本不想为该控件使用 VM,因为它是 100% 视图。
【讨论】: