ViewModels应该被不同的视图重用吗?如果是的话,何时?

fov*_*ven 5 wpf mvvm

根据我的阅读,似乎在MVVM中被认为是每个View都有自己相应的ViewModel的最佳实践,这是有道理的,因为ViewModel应该是View的模型.通常,不鼓励不同视图重用ViewModel.总是这样吗?如果不是,那么确定是否应该以这种方式重用ViewModel的一般指导原则是什么?

我可以想到的一种情况是,如果两个视图使用模型中完全相同的数据并且视图本身只是以不同方式表示数据,那么将ViewModel重用到具有不同视图的位置可能会令人满意.如果视图可以自己处理以不同方式表示相同数据,则一个ViewModel可能能够有效地为每个View提供服务.

Rog*_*mbe 8

我们有规则的原因是你在打破它们之前想一想.

也就是说:对于两个相似的视图使用相同的ViewModel没有任何问题.你需要非常小心,你的两个视图不会分歧,留下一个试图做两件事的视图模型.

这就是为什么建议每个视图都有一个视图模型的原因.尽管这可能会导致重复,但从长远来看,这将使视图更容易维护.

至于复制,具有共享基类的viewmodel类没有任何问题.