Wpf 视图模型是否应该被不同的视图重用?如果是,什么时候?

Wpf 视图模型是否应该被不同的视图重用?如果是,什么时候?,wpf,mvvm,Wpf,Mvvm,从我所读到的内容来看,在MVVM中,每个视图都有自己相应的ViewModel似乎是一种最佳实践,这是有意义的,因为ViewModel应该是视图的模型。通常,不鼓励通过不同的视图重用视图模型。总是这样吗?如果不是,确定是否应以这种方式重用ViewModel的一般准则是什么 我能想到的一种情况是,当两个视图使用模型中完全相同的数据,而视图本身只是以不同的方式表示数据时,使用不同视图重用ViewModel可能会令人满意。如果视图本身能够以不同的方式表示相同的数据,那么一个视图模型可能能够有效地为每个视

从我所读到的内容来看,在MVVM中,每个视图都有自己相应的ViewModel似乎是一种最佳实践,这是有意义的,因为ViewModel应该是视图的模型。通常,不鼓励通过不同的视图重用视图模型。总是这样吗?如果不是,确定是否应以这种方式重用ViewModel的一般准则是什么


我能想到的一种情况是,当两个视图使用模型中完全相同的数据,而视图本身只是以不同的方式表示数据时,使用不同视图重用ViewModel可能会令人满意。如果视图本身能够以不同的方式表示相同的数据,那么一个视图模型可能能够有效地为每个视图提供服务。

我们制定规则的原因是,您可以在打破规则之前进行思考

也就是说:对两个相似的视图使用相同的ViewModel没有错。您确实需要非常小心,以确保两个视图不会出现分歧,从而留下一个试图做两件不同事情的viewmodel

这就是为什么建议每个视图使用一个viewmodel。尽管这可能会导致重复,但从长远来看,这将使维护视图变得更容易


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

说得再好不过了。我认为在多个视图中从同一个VM开始,然后根据需要拆分它们和/或提取一个共同的祖先没有错(记住YAGNI)。