从我读到的内容来看,每个 View 都有自己对应的 ViewModel 似乎被认为是 MVVM 中的最佳实践,这是有道理的,因为 ViewModel 应该是 View 的模型。通常,似乎不鼓励不同 View 重用 ViewModel。总是这样吗?如果不是,确定是否应该以这种方式重用 ViewModel 的一般准则是什么?
我能想到的一种情况是,当两个 View 使用来自模型的完全相同的数据而 View 本身只是以不同的方式表示数据时,重用具有不同 View 的 View 模型可能会令人满意。如果 View 可以自己以不同的方式处理表示相同的数据,那么一个 ViewModel 可能能够有效地为每个 View 提供服务。
最佳答案
我们制定规则的原因是为了让您在打破规则之前先三思。
也就是说:对两个相似的 View 使用相同的 ViewModel 并没有错。您确实需要非常小心,以免您的两个 View 出现分歧,从而使 View 模型试图做两种不同的事情。
这就是为什么建议每个 View 有一个 View 模型的原因。尽管这可能会导致重复,但从长远来看,它会使维护 View 更容易。
至于重复,具有共享基类的 View 模型类没有任何问题。
关于wpf - ViewModel 是否应该被不同的 View 重用?如果有,什么时候?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4710268/