我想制作一个由多个视图组成的布局,每个视图都有自己的视图模型。
我还想实现一种ViewModel优先方法。所以我想在我的视图中放置一些容器,它们的datacontext绑定到容器viewmodel的相应viewmodel属性。然后,容器的内容将根据为绑定的viewmodel类型编写的数据模板加载。
public class CompositVm
{
public FirstPartVm FirstPartVm { get; set; }
public SecondPartVm SecondPartVm { get; set; }
}
我想知道天气嵌套视图模型是一种很好的做法,它是否与MVVM设计模式兼容?
答案 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模型绝对是最好的选择。