wpf - 在容器 View 模型中嵌套 View 模型是否违反 MVVM?

标签 wpf mvvm viewmodel mvvm-light

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

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

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

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

最佳答案

是的。这没有错。这是采用 MVVM 方法的最佳实践。

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

为此,您可以在MainLayoutViewModel 中创建 subview 模型的实例

ChildLayout1ViewModel ChildLayout1ViewModelInstance = new ChildLayout1ViewModel();
ChildLayout2ViewModel ChildLayout2ViewModelInstance = new ChildLayout2ViewModel();

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

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

关于wpf - 在容器 View 模型中嵌套 View 模型是否违反 MVVM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37833201/

相关文章:

WPF:如何在 ItemsControl 中使用两个不同的控件?

c# - WPF MVVM Light 单元测试 ViewModels

wpf - ViewModel 绑定(bind)错误

wpf - 从 ViewModel 闪烁图像

android - Jetpack Compose MutableLiveData 不更新 UI 组件

android - 在 Dagger Dialog Fragment 中使用 View Model Providers(ViewModelProviders)

c# - 为什么为 BitmapImage 对象设置 URISource 需要 Begin 和 End 初始化?

c# - 在WPF中从后面的代码中删除代码

wpf - M-V-VM WPF : Way to maintain Databinding while passing parent object of Databound object into IValueConverter?

wpf - 为用户控件定义 View 模型的类型,然后从父控件处理它