编辑上下文体系结构

[本文档仅供预览,在以后的发行版中可能会发生更改。包含的空白主题用作占位符。]

本主题说明在为 适用于 Visual Studio 的 WPF 设计器开发功能提供程序和功能连接器时,编辑上下文的作用。 有关功能提供程序和功能连接器的更多信息,请参见功能提供程序和功能连接器

编辑上下文:捕获设计器的当前状态

可视化设计器在使用的过程中会积累大量的状态信息。 状态可以表示任何类型的设计时信息,如当前选择内容中的对象或者单击鼠标按钮时的行为。 状态必须存储在一个中心位置,以便在需要时可以检索到它。 EditingContext 类表示设计器的这一中心状态储存库。

服务

服务是类的一个实例,它定义详细说明的行为。 服务提供设计器中的行为和实现。 在上下文中创建服务后,在释放该上下文之前,该服务始终存在。 服务永远不会从上下文中消失。 各个服务都具有一致的实例值,因此缓存它们始终是安全的。 有关演示如何实现服务的代码示例,请参见如何:创建自定义功能连接器

上下文项

上下文项是不可变的对象,并包含状态。 一些上下文项还定义方法,这些方法可以对上下文项所包含的状态执行操作。

可以在上下文中添加和移除上下文项。 上下文项是瞬态的,但它们始终有一个值。 即使某个特定的上下文项不在上下文中,它也具有默认值,而绝不会返回 null。

与服务不同,上下文项的值可以随时更改,因此您绝不应缓存上下文项。 您可以订阅在特定类型的上下文项更改时引发的更改回调。

上下文项是不可变的,但新上下文项可以替换现有上下文项来模拟可变性。

订阅

服务和上下文项具有管理器。 服务管理器和上下文项管理器实际上是存放数据的表。 例如,您使用服务管理器来发布新服务。

服务管理器和上下文项管理器还提供订阅机制,该机制在存在特定的数据片段时通知代码。 此通知是作为回调委托来实现的。 订阅是一个委托,在添加了特定的服务或上下文项类型时调用。

与 ComponentModel 设计器框架的相似处

编辑上下文在概念上类似于 System.ComponentModel.Design 命名空间中的 IDesignerHostIServiceContainer 接口。 有关更多信息,请参见比较 Windows 窗体设计器框架与 WPF 设计器框架

请参见

参考

Microsoft.Windows.Design.Services

EditingContext

ContextItem

其他资源

WPF 设计器扩展性