1

我的问题是:

  1. 可以/应该ViewModel支持多个Views吗?
  2. 可以/应该View由多个支持ViewModels吗?(我相信这个问题的答案是肯定的)。

对于相对较小的模块,您的视图相对较小的这种情况的最佳做法是什么。因此,在这种情况下,我们应该ViewModels为每个视图创建多个视图,还是应该使用单个ViewModel视图来为同一模块中的所有视图提供服务。注意:较小模块中的视图数量限制为 5-6。

4

2 回答 2

1

这是我对此的看法——

  1. 是的,同一个 ViewModel 可以用于多个视图;例如,假设您有CustomerViewModel一个客户的详细信息和一些命令,您可以将此 ViewModel 与一个具有DataGrid显示所有客户的视图一起使用(因此ObservableCollection<CustomerViewModel>将使用一个),并且还可以将相同的 ViewModel 与一个具有要编辑的表单的视图一起使用单个客户的详细信息。

  2. 这取决于,但通常 No。如果一个视图包含多个视图,则它可以依赖于多个 ViewModel;比如说,一个具有多个视图的窗口。例如具有客户列表的仪表板、添加新客户的表单、显示产品的部分等; 即使在这种情况下,最好创建一个包含其他子视图模型实例的单个父 ViewModel。

    我总是喜欢为单个视图使用一个 ViewModel,并尝试以这种方式设计我的应用程序。

但是是的,这一切都取决于应用程序以及您如何设计视图和视图模型。在 MVVM 中,您首先根据业务逻辑设计模型和视图模型,然后将它们与您的视图一起使用。

也看看这个类似的问题 - ViewModel per View or per Model?

于 2012-06-14T06:58:55.727 回答
0

这取决于。例如,如果您有一个包含一系列观察的模型,您可以拥有相同的两个视图,一个带有图表,一个带有网格。我的意思是你对同一个概念模型有不同的看法。如果视图是一个页面,其中包含具有不同内容的子视图,最好为所有这些部分提供一个特定的视图模型为它们服务。作为个人经验,我过去曾有过由单个模型提供的铰接视图,但我对此并不满意,您最终会遇到视图模型代码变得过于复杂并最终需要重构的情况。

于 2012-06-14T06:57:51.513 回答