在容器视图模型中嵌套视图模型是否违反 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 绑定到 ChildLayout1ViewModel 和 ChildLayout2 绑定到 ChildLayout2ViewModel。
为此,您可以在 MainLayoutViewModel
中创建 子视图模型 的实例
ChildLayout1ViewModel ChildLayout1ViewModelInstance = new ChildLayout1ViewModel();
ChildLayout2ViewModel ChildLayout2ViewModelInstance = new ChildLayout2ViewModel();
您可以在 MainLayout.xaml 本身中设置视图的 DataContext。当我们处理具有非常大的数据绑定的视图时,这非常有用。很容易将它们分开并相应地处理事件和数据。
因此,遵循 MVVM 模型绝对是最好的做法。
我想制作一个由多个视图组成的布局,每个视图都有自己的视图模型。
我还想实现 ViewModel 优先的方法。所以我想在我的视图中放置一些容器,它们的数据上下文绑定到容器视图模型的相应视图模型 属性。然后容器的内容将根据为绑定的视图模型类型编写的数据模板加载。
public class CompositVm
{
public FirstPartVm FirstPartVm { get; set; }
public SecondPartVm SecondPartVm { get; set; }
}
我想知道天气嵌套视图模型是一种很好的做法,它是否与 MVVM 设计模式兼容?
是的。这没有错。这是在 MVVM 方法中做的最佳实践。
假设您有一个主布局视图 MainLayout,它绑定到 MainLayoutViewModel。 在 MainLayout 视图中,您可能有 2 个子视图,可能将主视图分成 2 行或 2 列,比如 ChildLayout1 绑定到 ChildLayout1ViewModel 和 ChildLayout2 绑定到 ChildLayout2ViewModel。
为此,您可以在 MainLayoutViewModel
中创建 子视图模型 的实例ChildLayout1ViewModel ChildLayout1ViewModelInstance = new ChildLayout1ViewModel();
ChildLayout2ViewModel ChildLayout2ViewModelInstance = new ChildLayout2ViewModel();
您可以在 MainLayout.xaml 本身中设置视图的 DataContext。当我们处理具有非常大的数据绑定的视图时,这非常有用。很容易将它们分开并相应地处理事件和数据。
因此,遵循 MVVM 模型绝对是最好的做法。