Visual Studio 2010 中的扩展性更改
[本文档仅供预览,在以后的发行版中可能会发生更改。包含的空白主题用作占位符。]
适用于 Visual Studio 的 WPF 设计器 为实现提供复杂的平台自定义设计 WPF 和 Silverlight 控件的体验。 WPF 设计器扩展性 API 从它在 Visual Studio 2008初始发布以来发展。 以下各节描述 WPF 设计器扩展性的更改Visual Studio 2010的。
对 Silverlight 和多个平台版本的支持
在 Visual Studio 2008,控件设计时只能以最新的 WPF 平台版本。 在 Visual Studio 2010,就支持多个平台,包括设计时对 WPF 3.5、 WPF 4,, Silverlight 3 和未来平台发行版中是扩展。 当扩展性 API 对所有这些平台存在,控件设计时作者可以轻松地编写一个体验并共享对每个平台的控件运行时之间。
expression blend 中的支持
控件的设计时实现现在可以面向 expression blend,使用同一可扩展性接口在 Visual Studio。 您可以决定是两种创作环境分别或提供设计时体验。
注册元数据
扩展性 API 上的最重要的区别是 IRegisterMetadata 接口用 IProvideAttributeTable 接口替换。 此更改,以及启用多平台支持,使可扩展性 API 中的更改。 这意味着 Visual Studio 2008 现有控件设计时实现在 Visual Studio 2010不会加载。
此外,在 Visual Studio 2010,请使用 ProvideMetadataAttribute 属性指示设计时程序集提供元数据到设计器。
新的扩展点
新的扩展性 API 还支持新的设计时体验,包括:
在 " 属性 " 窗口中,为访问模型支持从类别编辑器。 这种变化与列表通用属性提升到类的顶部,使控件作者能够在 " 属性 " 窗口中丰富的编辑体验。
启用的更简单的装饰器位置新 AdornerPanel 实用工具方法相对自定义控件。
之间共享设计时实现的新编程模型在不同的设计工具,例如 Visual Studio 和 expression blend。
之间共享设计时实现的新编程模型在多个目标框架。
比较 Visual Studio 2008 和 Visual Studio 2010 中的扩展性
下表总结了创作自定义设计时体验之间的差异。 Visual Studio 2008 和 Visual Studio 2010。
Visual Studio 2008 |
Visual Studio 2010 |
---|---|
若要注册设计时类型,请实现 IRegisterMetadata 接口并使用 MetadataStore 类。 |
若要注册设计时类型,请实现 IProvideAttributeTable 接口并调用 CreateTable 方法。 |
您不需要添加程序集级别特性。 |
必须使用标记 ProvideMetadataAttribute 属性的设计时程序集。 |
若要将设计器类型与图形元素,请使用在 NewItemFactory的 GetImage 方法,该方法可能会返回各种元素类型。 |
若要将设计器类型与图标,请使用 GetImageStream 方法返回位图。 只支持位图。 |
如访问模型属性,请使用依赖项属性,例如: ModelProperty backgroundProperty = adornedControlModel.Properties[Control.BackgroundProperty]; |
如访问模型属性,请使用依赖项属性的名称,例如: ModelProperty backgroundProperty = adornedControlModel.Properties["Background"]; 此外,您还可以定义 PropertyIdentifier,该类型/字符串组合。 ,当简单名称查找不足时,PropertyIdentifier 使用附加属性。 |
若要区分布局空间和呈现空间,请使用 AdornerCoordinateSpaces 类。 |
不使用 AdornerCoordinateSpaces 类。 |
若要指定相对于内容的装饰器位置,请使用 AdornerPlacementCollection 类。 |
若要指定相对于内容的装饰器位置,请使用 SetAdornerHorizontalAlignment、 SetAdornerVerticalAlignment和 SetAdornerMargin 方法。 AdornerPlacementCollection 类以实现向后兼容。 |