嵌套的viewmodel设计最佳实践

时间:2014-05-02 14:04:09

标签: wpf mvvm

我对MVVM并不陌生,但我不熟悉已知的支持框架,例如mvvm light,以及那些强制执行的设计/最佳实践。我有3个视图与相应的视图模型。假设xaml看起来像这样:

    <UserControl x:Class="view1">
        <ns:view2></ns:view2>
    </UserControl>

    <UserControl x:Class="view2">
        <ns:view3></ns:view3>
    </UserControl>

    <UserControl x:Class="view3">

    </UserControl>

现在应该如何关联视图模型?一种方法是:

class viewmodel1 {
    viewmodel2 _member;
}

class viewmodel2 {
    viewmodel3 _member;
}

class viewmodel3 {

}

现在我看到我刚刚使用上面的方法创建了一个强类耦合。有更好的想法吗?

1 个答案:

答案 0 :(得分:1)

我会像你一样构建我的视图模型类...我相信大多数MVVM开发人员会这样做。那是因为我们通常将一个视图模型用于一个视图,因此关于将子视图模型放在何处的选项确实没有太多。

  

现在我看到我刚刚使用上面的方法

创建了一个强类耦合

您是否见过MVVM应用程序,其中视图未与视图模型耦合?当然,根据MVVM的性质,我们通常将一个视图模型用于一个视图,它们总是耦合在一起。但是,这不是问题,因为这些不是可重用的数据类。

即使在极少数情况下我们想要替换我们的UI图层,视图模型也可能会随着视图一起消失,具体取决于替换它们的内容。想一想......在WinForms应用程序甚至Web应用程序中都不需要INotifyPropertyChange实现和ICommand实例。

因此,我建议以这种方式组织您的视图/视图模型绝对没有问题。