将视图模型嵌套在容器视图模型中是否违反了 MVVM 设计模式?

3
我希望制作一个由多个视图组成的布局,每个视图都有自己的视图模型。
我还想实现 ViewModel-first 方法。因此,我想在我的视图中放置一些容器,它们的数据上下文绑定到相应的容器视图模型属性。然后,根据为绑定的视图模型类型编写的数据模板加载容器的内容。
public class CompositVm
{
        public FirstPartVm FirstPartVm { get; set; }
        public SecondPartVm SecondPartVm { get; set; }
}

我想知道嵌套View Model是否是一种好的实践方法,它是否与MVVM设计模式兼容?


你能给一个大概的例子吗? - Noctis
2
从 MVVM 的角度来看,我没有发现任何问题。 - nkoniishvt
1个回答

4
是的。这样做没有问题。在MVVM方法中这是最佳实践。
假设您有一个主布局视图MainLayout,它绑定到MainLayoutViewModel。 在MainLayout视图中,您可能有2个子视图,将主视图分为2行或2列,例如ChildLayout1绑定到ChildLayout1ViewModel和ChildLayout2绑定到ChildLayout2ViewModel。
为此,您可以在MainLayoutViewModel中创建Child视图模型的实例。
ChildLayout1ViewModel ChildLayout1ViewModelInstance = new ChildLayout1ViewModel();
ChildLayout2ViewModel ChildLayout2ViewModelInstance = new ChildLayout2ViewModel();

您可以在MainLayout.xaml中设置视图的DataContext。当我们处理具有非常大的数据绑定的视图时,这非常有用。将它们分开并相应地处理事件和数据非常容易。

因此,在遵循MVVM模型时,这绝对是最好的做法。


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