我很难掌握 Shell vs 主窗口 vs "使用哪个指挥" 即使在阅读了有关Screen and Conductors的文档之后,也很>概念。
假设我正在创建一个具有菜单工具栏的应用程序,该工具栏几乎总是可见(但并非总是如此)。
(1)因此, MetroWindow 将是 Conductor.Collection.AllActive ,因为它将保存flyout / popup和主容器,并且两者都可以在同时?
(2)此外,(1)会保存从某些事件激活的屏幕吗? (如前所述,屏幕没有菜单。)
(3)主容器将是 Conductor.Collection.One ,因为它将保持从菜单激活的屏幕,并且仅一个人可以一次激活吗?
我是在正确的道路上吗?有什么想法吗?
答案 0 :(得分:3)
好的,我已经弄清楚了。
ShellView 是使用 MetroWindow 构建的。 ShellViewModel 是一个简单的Conductor<IContainer>
。
此视图模型将管理弹出窗口以及 IContainer 当前可见。此外,此viewmodel将管理 Mahapps.metro标题栏中的任何按钮。
每个 IContainer 可以是任何类型的指挥(Collection.One或Collection.AllActive)。这样, IContainer 可以显示菜单,也可以不显示;它完全取决于它。
总结并回答我自己的问题:
没有。 MetroWindow将是ShellView,它具有继承自Conductor的ShellViewModel。
ShellViewModel将激活任何IContainer。所以是的,当一个事件被引发时,ShellViewModel将监听并激活适当的视图模型。
没有。没有主要容器;只有ShellView。