MVVM /用户控制& View = ViewModel约定

时间:2011-02-24 00:29:24

标签: silverlight-4.0 user-controls mvvm-light

MVVM Lightnt的Laurent向我介绍了MVVM,一个视图的约定有一个视图模型。那么用户控件的经验法则是什么?每个用户控件都有一个ViewModel?在创建利用多个用户控件的View时,是否要创建另一个viewmodel来聚合用户控件视图模型?

提前感谢您的意见。

理查德

2 个答案:

答案 0 :(得分:4)

在我的MVVM项目中,我倾向于按照你的建议行事:每个UserControl一个ViewModel和另一个将这些一起聚合在一起的ViewModel。

聚合ViewModel通常是窗口的ViewModel而不是另一个UserControl - 虽然这不是必需的,可能更多是我的偏好和历史以及我主要在WPF中工作的结果。

我没有为UserControl提供单独ViewModel的地方是我创建非常具体的可重用UserControls的地方 - 例如具有特定视觉效果的按钮或自定义滑块。

这反映在我的项目结构中 - 我有两个用于UserControls的标准文件夹(没有ViewModels)和视图,它们是Windows或UserControls,并且总是有ViewModels。

答案 1 :(得分:2)

  

每个用户控件的一个ViewModel?

是的,总的来说。 UserControl通常只是另一个View。这通常意味着每个UserControl的ViewModel,其中“父”VM聚合它(以匹配聚合数据的View)。

然而,有一些例外:如果UserControl实际上只是一个自定义控件,而不是特定于业务的东西,它可能是“纯粹的视图”。在这种情况下,您可能根本不想拥有该控件的VM,因为它是100%View。