代码之家  ›  专栏  ›  技术社区  ›  Kilazur

如何将ViewModel分成多个?

  •  0
  • Kilazur  · 技术社区  · 9 年前

    后续 this question 的评论,我觉得有必要问这个问题。

    这是我目前正在开发的一个应用程序,为了避免进一步的问题,并继续与Catel合作(无论我有什么问题,使用起来都非常愉快),我需要一些主题的解释。


    我有一个API类(让我们调用它 API )它包含几种连接到某个内容管理器并对其执行操作的方法。 这是一个单独的班级,我想分成几个 Model 类(例如,两个即可):

    • Connection :非常不言自明,将包含两个 Commands 使命感 API.Connect API.Disconnect
    • DataSource :指示应用程序将在内容管理器中的何处/在何处工作,其中包含一个 Command 使命感 API.LoadDataSource

    就模型而言,没关系,没什么太难的。我的第一个问题是 ViewModels ; 我需要使用 美国石油学会 在这些中的每一个。所以目前,我只使用一个ViewModel UserControls 与我的 Models 就从我这里继承吧 MainWindow (这些是常规的UserControls,而不是Catel的,否则它会因为没有ViewModel而对我大喊大叫)。

    由于Catel不太喜欢嵌套视图模型,所以我的问题是:

    如何在各种ViewModel之间传递/使用参数? (或 如何在不使用嵌套视图模型的情况下分离主视图模型? )

    1 回复  |  直到 7 年前
        1
  •  1
  •   Geert van Horrik    9 年前

    当我需要在应用程序中保持状态时,我使用服务来实现这一点。视图模型是视图的表示形式,仅在视图处于活动/可见状态时才有效。状态不仅如此,它还需要在整个应用程序中以不同的视图模型进行管理。

    因此,我总是选择拥有一个拥有国家的服务。此服务在ServiceLocator(IoC容器)中注册,并将通过依赖注入注入到视图模型中。

    这样,您可以在加载视图模型时始终检索信息。最好的方法是 初始化 方法(您也应该在此处订阅事件)。您应该在 视图模型的方法。