【问题标题】:Understanding Shell, Conductor, Main Window concept in Caliburn.Micro了解 Caliburn.Micro 中的外壳、导体、主窗口概念
【发布时间】:2014-11-26 23:54:36
【问题描述】:

我很难掌握 Shell vs Main Window vs “使用哪个导体” 的概念,即使在阅读之后关于Screen and Conductors 的文档。

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

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

(1) 因此,MetroWindow 将是一个 Conductor.Collection.AllActive,因为它将包含弹出/弹出窗口和主容器,并且两者都可以在同一时间?

(2) 另外,(1) 会保留从某个事件激活的 screen? (屏幕没有我之前描述的菜单)。

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

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

【问题讨论】:

    标签: wpf caliburn.micro mahapps.metro


    【解决方案1】:

    好的,我想通了。

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

    这个视图模型将管理 flyouts 以及当前可见的 IContainer。此外,此视图模型将管理 Mahapps.metro 标题栏中的任何按钮

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

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

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

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

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

    【讨论】:

    • 你能处理一个使用 OneActive 和 ShellView 作为集中器的例子吗?谢谢..
    • OneActive 通常意味着您正在使用 TabControlListBox,因为您有 n 个项目,但一次只有一个处于活动状态.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 2020-02-27
    • 2016-09-30
    • 1970-01-01
    相关资源
    最近更新 更多