在容器视图模型中嵌套视图模型是否违反 MVVM?

Does nesting viewmodels in a container viewmodel violate MVVM?

我想制作一个由多个视图组成的布局,每个视图都有自己的视图模型。

我还想实现 ViewModel 优先的方法。所以我想在我的视图中放置一些容器,它们的数据上下文绑定到容器视图模型的相应视图模型 属性。然后容器的内容将根据为绑定的视图模型类型编写的数据模板加载。

public class CompositVm
{
        public FirstPartVm FirstPartVm { get; set; }
        public SecondPartVm SecondPartVm { get; set; }
}

我想知道天气嵌套视图模型是一种很好的做法,它是否与 MVVM 设计模式兼容?

是的。这没有错。这是在 MVVM 方法中做的最佳实践。

假设您有一个主布局视图 MainLayout,它绑定到 MainLayoutViewModel。 在 MainLayout 视图中,您可能有 2 个子视图,可能将主视图分成 2 行或 2 列,比如 ChildLayout1 绑定到 ChildLayout1ViewModelChildLayout2 绑定到 ChildLayout2ViewModel

为此,您可以在 MainLayoutViewModel

中创建 子视图模型 的实例
ChildLayout1ViewModel ChildLayout1ViewModelInstance = new ChildLayout1ViewModel();
ChildLayout2ViewModel ChildLayout2ViewModelInstance = new ChildLayout2ViewModel();

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

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