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

时间:2016-06-15 10:44:14

标签: wpf mvvm viewmodel mvvm-light

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

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

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

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

1 个答案:

答案 0 :(得分:4)

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

假设您有一个主要布局视图 MainLayout ,该视图绑定到 MainLayoutViewModel 。 在 MainLayout 视图中,您可能有2个子视图,可能将主视图分为2行或2列,例如 ChildLayout1 绑定到 ChildLayout1ViewModel ChildLayout2 绑定到 ChildLayout2ViewModel

为此,您可以在 MainLayoutViewModel

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

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

因此,遵循MVVM模型绝对是最好的选择。