Caliburn Micro 第六部分 : 显示和执行者

http://www.mindscapehq.com/blog/index.php/2013/09/11/caliburn-micro-part-6-introduction-to-screens-and-conductors/


那些是什么

最普遍来讲,一个屏幕是一个应用一个生命周期内的一部分。它可以被激活、不被激活或者被关闭。其中最好的一个例子就是 Visual Studio 中的代码编辑器。一个代码编辑器当用户打开一个文件进行编辑的时候,它处于激活状态,当用户切换到另一个标签页的时候,当用户关闭当前标签页的时候,它应该被关闭。当屏幕的状态发生改变的时候,会触发相应的事件,这样才能保证能够将合适的工具栏显示在当前激活的标签页。到目前为止,它给人的感觉是一种特殊的 View-Model,但其实并不总是这样的。屏幕更新一个角色,而不是 View-Model 。

执行者控制着生命周期内的一个或多个屏幕。它们需要根据不同的场景来对它们负责的屏幕进行 激活、取消激活以及关闭。关闭操作也包含着查询它是否能够被关闭。举个例子,如果一个屏幕里面存放着不安全的数据,它会取消关闭操作以保证数据不会丢失。

感觉对 Screen 和 Conductor 翻译不对,所以后面讲直接使用英语本身。

Caliburn Micro 中的 Screen 和 Conductor

Caliburn Micro 中有很多关于 Screen 和 Conductor 的接口,每个接口都是整个系统的简单的一个部分,比如它提供了窗体的激活、取消激活和关闭的自定义操作逻辑。如果你自己定义了 Screen 和 Conductor,你可以混合你需要的接口,这样你只需要实现自己关心的功能。Caliburn Micro 并不希望所有的 Screen 和 Conductor 实现所有的相关接口,而是仅仅实现你需要的。幸运的是,Caliburn Micro 已经包含了一些实现了接口的 Conductor 类。下面介绍一下在不同的场景很有用的一些简单的描述:

  • Condutor 一次只管理一个 Screen,一旦激活了一个新的 Screen,前面的所有 Screen 都是取消激活状态、关闭或者被执行者遗忘的。
  • Conductor.Collection.OneActive 它能一次管理多个 Screen,而且同时允许多个 Screen 处于激活状态,很像 Tab Control。当一个 Screen 被激活,先前的 Screen 仅仅是简单的取消激活状态,它不会被关闭,一直由 Conductor 在管理。只有在你移除的时候,它才会被显式的关闭。这种类型的 Conductor 通常在关闭一个 Screen的时候激活所有 Screen 中的一个。它有一个简单的默认逻辑,如果有需要,你也可以重写。
  • Conductor.Collection.AllActive 和上一个 Conductor 非常的类似,但是它允许多个 Screen 同时处在激活状态。

使用步骤

1.

知识共享许可协议
《Caliburn Micro 第六部分 : 显示和执行者》 常伟华 创作。
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议 | 3.0 中国大陆许可协议进行许可。

站内公告