我对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 {
}
现在我看到我刚刚使用上面的方法创建了一个强类耦合。有更好的想法吗?
答案 0 :(得分:1)
我会像你一样构建我的视图模型类...我相信大多数MVVM开发人员会这样做。那是因为我们通常将一个视图模型用于一个视图,因此关于将子视图模型放在何处的选项确实没有太多。
现在我看到我刚刚使用上面的方法
创建了一个强类耦合
您是否见过MVVM应用程序,其中视图未与视图模型耦合?当然,根据MVVM的性质,我们通常将一个视图模型用于一个视图,它们总是耦合在一起。但是,这不是问题,因为这些不是可重用的数据类。
即使在极少数情况下我们想要替换我们的UI图层,视图模型也可能会随着视图一起消失,具体取决于替换它们的内容。想一想......在WinForms应用程序甚至Web应用程序中都不需要INotifyPropertyChange
实现和ICommand
实例。
因此,我建议以这种方式组织您的视图/视图模型绝对没有问题。