【问题标题】:A ViewModel shared across multiples Views跨多个 View 共享的 ViewModel
【发布时间】:2012-08-30 13:57:38
【问题描述】:

我需要一些关于 MVVM 模式的帮助。

我创建了一个 ViewModel,它公开了要在名为 A 的视图中的列表视图中显示的数据和命令。

这个 ViewModel 也用在一个名为 B 的视图中。在这个视图中,我只需要公开一些属性而不需要任何命令,但我必须再创建 2 个属性。

为视图 B 创建一个更具体的 ViewModel 是否更好,即使它涉及同一个对象?

【问题讨论】:

    标签: c# .net wpf mvvm


    【解决方案1】:

    我建议组合,有两个视图模型,它们都有一个属性,其中包含一个包含公共属性的视图模型。这两个视图模型应该只有它们特定的其他属性和命令。

    【讨论】:

      【解决方案2】:

      很难回答。但我可以告诉你我们为我们的应用程序做了什么。我们有一个视图模型,它或多或少独立于视图,它只是作为我们业务数据的包装器,并包含几乎所有显示该模型的部分中使用的所有内容。现在对于视图部分,我们有非常具体的视图模型。像 ProjectTreeViewModel 或 SearchResultViewmodel 一样,它们都有对应的 Item 视图模型。 Item viewmodel 不需要重新实现所有的逻辑,它只需要聚合通用模型视图模型。 为了更好地类比:

      如果您有 FileDriveFolder 模型。您将创建一个FileViewModelDriveViewModelFolderViewModel。但只有一个ExplorerItemViewModel。这只需要提供一个属性来暴露底层视图模型。其余的取决于您的数据模板。

      【讨论】:

      • 我的工作方式或多或少是相同的。有问题的 ViewModel 封装了一个业务对象。感谢您的回答
      猜你喜欢
      • 1970-01-01
      • 2021-06-22
      • 2018-02-22
      • 2019-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多