了解Caliburn.Micro中的壳牌,导体,主窗口概念

时间:2014-11-26 23:54:36

标签: wpf caliburn.micro mahapps.metro

我很难掌握 Shell vs 主窗口 vs "使用哪个指挥" Screen and Conductors的文档之后,也很>概念。

假设我正在创建一个具有菜单工具栏的应用程序,该工具栏几乎总是可见(但并非总是如此)。

  • 每个菜单在容器空间中显示不同的视图。
  • 当某些事件发生时,应用程序应显示完全不同的视图(甚至菜单都不可见)。
  • 标题栏中会有一个设置按钮(Mahapps.metro):image
    • 单击设置时,应显示弹出窗口(或弹出窗口)(不在容器空间内)。

(1)因此, MetroWindow 将是 Conductor.Collection.AllActive ,因为它将保存flyout / popup和主容器,并且两者都可以在同时?

(2)此外,(1)会保存从某些事件激活的屏幕吗? (如前所述,屏幕没有菜单。)

(3)主容器将是 Conductor.Collection.One ,因为它将保持从菜单激活的屏幕,并且仅一个人可以一次激活吗?

我是在正确的道路上吗?有什么想法吗?

1 个答案:

答案 0 :(得分:3)

好的,我已经弄清楚了。

ShellView 是使用 MetroWindow 构建的。 ShellViewModel 是一个简单的Conductor<IContainer>

此视图模型将管理弹出窗口以及 IContainer 当前可见。此外,此viewmodel将管理 Mahapps.metro标题栏中的任何按钮

每个 IContainer 可以是任何类型的指挥(Collection.One或Collection.AllActive)。这样, IContainer 可以显示菜单,也可以不显示;它完全取决于它。

总结并回答我自己的问题:

  1. 没有。 MetroWindow将是ShellView,它具有继承自Conductor的ShellViewModel。

  2. ShellViewModel将激活任何IContainer。所以是的,当一个事件被引发时,ShellViewModel将监听并激活适当的视图模型。

  3. 没有。没有主要容器;只有ShellView。