我需要一些关于 MVVM 模式的帮助。
我创建了一个 ViewModel,它公开要在名为 A 的视图中的列表视图中显示的数据和命令。
此 ViewModel 也用于名为 B 的视图中。在此视图中,我只需要公开一些属性而不需要任何命令,但我必须再创建 2 个属性。
为 View B 创建一个更具体的 ViewModel 是否更好,即使它涉及同一个对象?
我建议组合,有两个视图模型,它们都有一个属性,其中包含一个包含共同属性的视图模型。这两个视图模型应该只有它们特定的其他属性和命令。
很难回答。但我可以告诉你我们为我们的应用程序做了什么。我们有一个视图模型,它或多或少独立于视图,它只是作为我们业务数据的包装器,并包含几乎所有显示该模型的部分中使用的所有内容。现在对于视图部分,我们有非常具体的视图模型。像 ProjectTreeViewModel 或 SearchResultViewmodel 一样,它们都有对应的 Item 视图模型。Item viewmodel 不需要重新实现所有的逻辑,它只需要聚合通用模型视图模型。做一个更好的类比:
如果您有File
,Drive
和Folder
模型。您将创建一个FileViewModel
,DriveViewModel
和FolderViewModel
. 但只有一个ExplorerItemViewModel
。这只需要提供一个属性来暴露底层视图模型。其余的取决于您的数据模板。