提前感谢您的意见。
理查德
答案 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。