演练:为工具箱图标提供元数据
[本文档仅供预览,在以后的发行版中可能会发生更改。包含的空白主题用作占位符。]
本演练演示 windows presentation foundation 自定义控件库中演示如何提供工具箱图标为不同的设计器 (例如, Visual Studio 和 (WPF) expression blend,。 将自定义控件添加到设计器的工具箱时,相应的图标显示在控件的名称旁边。
适用于 Visual Studio 的 WPF 设计器 启用提供自定义工具箱图标为不同的设计器。 例如,可以针对您的自定义控件的不同图标在 Visual Studio 和 expression blend。 设计时实现提供的图标将重写控件的运行时程序集内的默认图标。
在本演练中,您将执行下列任务:
具有嵌入图标位图创建一个 WPF 自定义控件库项目。
创建重写默认工具箱图标的设计时元数据的一个单独的程序集。
测试控件的图标在设计时。
完成后,将会替换自定义控件的默认运行时图标在设计时。
备注
您看到的对话框和菜单命令可能会与 " 帮助 " 中的描述不同具体取决于您现用的设置或版本。若要更改设置,请选择在 工具 菜单的 导入和导出设置 。有关更多信息,请参见 Visual Studio 设置。
系统必备
您需要以下组件来完成本演练:
- Visual Studio 2012 RC.
创建具有工具箱图标的自定义控件
若要为控件创建自定义工具箱图标,请将一个图像作为嵌入资源添加到控件的项目。
创建具有工具箱图标的自定义控件
创建新 WPF 自定义控件库名为 TailspinToysControlLibrary的项目在 Visual Basic 或 Visual C#。
将 CustomControl1 代码文件重命名为 TailspinToysControl。
添加作为嵌入资源名为的 TailspinToysControl.icon.bmp 一工具箱图标。 有关更多信息,请参见 演练:为控件创建自定义工具箱图标。
使用 文本工具,在位图中绘制 默认值 ,指示工具箱何时加载控件程序集的默认图标。
将项目的输出路径设置为 “ \ TailspinToysControlLibrary \ bin \”。
生成解决方案。
创建设计时元数据程序集
设计时代码在特定元数据程序集中部署。 对于本演练,自定义元数据。 Visual Studio 和 expression blend 在名为 TailspinToysControlLibrary.Design 的程序集支持和部署。
创建设计时元数据程序集
创建名为 TailspinToysControlLibrary.Design的设计时程序集。 有关更多信息,请参见 演练:提供自定义设计时元数据。
在代码编辑器中打开 RegisterMetadata 代码文件。
用下面的代码替换自动生成的代码。 将自定义设计时特性附加到 TailspinToysControl 类的此代码创建 AttributeTable 。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Windows.Design; using Microsoft.Windows.Design.Features; using Microsoft.Windows.Design.Metadata; using TailspinToysControlLibrary; // The ProvideMetadata assembly-level attribute indicates to designers // that this assembly contains a class that provides an attribute table. [assembly: ProvideMetadata(typeof(TailspinToysControlLibrary.Design.RegisterMetadata))] namespace TailspinToysControlLibrary.Design { internal class RegisterMetadata : IProvideAttributeTable { // Called by the designer to register any design-time metadata. public AttributeTable AttributeTable { get { AttributeTableBuilder builder = new AttributeTableBuilder(); // Set ToolboxBrowsableAttribute to true to display your custom control // in the Toolbox and in the Choose Items... dialog box. builder.AddCustomAttributes(typeof(TailspinToysControl), new ToolboxBrowsableAttribute(true)); return builder.CreateTable(); } } } }
保存解决方案。
创建设计时工具箱图标
有了设计时程序集,您可以创建自定义工具箱图标并将其添加到项目为嵌入资源。 将创建两个图标,一 Visual Studio 的另一个用于 expression blend。
为 Visual Studio 创建设计时工具箱图标
添加一个新的位图文件向 TailspinToysControlLibrary.Design 项目。 将该位图文件命名为 TailspinToysControlLibrary.TailspinToysControl.VisualStudio.24bit.48x48.bmp。
在 " 属性 " 窗口中,将位图的 颜色 属性设置为 24 位。
使用 文本工具,在位图中绘制 元数据 ,指示图标是从设计器元数据设置。
在 解决方案资源管理器,选择位图文件。
在 " 属性 " 窗口中,将 生成操作 属性设置为 嵌入的资源。
添加一个新的位图文件向 TailspinToysControlLibrary.Design 项目。 将该位图文件命名为 TailspinToysControlLibrary.TailspinToysControl.Expression.4bit.48x48.bmp。
备注
blend 仅加载 .png 文件作为图标,因此,可以使用外部画图程序创建 blend 图标。
右击 " 图像编辑器并选择 打开外部编辑器 从快捷菜单。
画图应用程序打开。
使用 " 文本工具,绘制吻合位图,指示图标用于 expression blend 的 资产 窗口中。
图像保存为 .png 文件。
在 解决方案资源管理器,右击 TailspinToysControlLibrary.Design 项目,指向 add,然后选择 现有项 从快捷菜单。
在 添加现有项 对话框中,选择 " TailspinToysControlLibrary.TailspinToysControl.Expression.4bit.48x48.png 然后单击 add。
在 解决方案资源管理器,选择该 .png 图像文件。
在 " 属性 " 窗口中,将 生成操作 属性设置为 嵌入的资源。
删除空 TailspinToysControlLibrary.TailspinToysControl.Expression.4bit.48x48.bmp 位图文件。
生成解决方案。
测试工具箱图标
通过添加 TailspinToysControl 测试您的自定义工具箱图标添加到工具箱中。
测试工具箱图标
添加在 Visual Basic 中的新 WPF 名为 TestApplication 的应用程序项目或 Visual c# 为解决方案。
在 MainWindow.xaml WPF Designer打开。 在工具箱中, TailspinToysControl 出现在 TailspinToysControlLibrary 控件 选项。 默认控件图标显示。
备注
在控件的运行时程序集内嵌入的图标不再显示。这是工具箱自动填充功能的限制。
在工具箱中,右击 TailspinToysControl,从快捷菜单中选择 Delete ,然后单击 确定。
TailspinToysControl 从 " 工具箱 " 中移除。
在工具箱中,右击 TailspinToysControlLibrary 控件 选项并选择 选择项 从快捷菜单。
选择工具箱项 对话框打开。
单击 WPF 元素 选项。 有关更多信息,请参见 选择工具箱项, WPF 元素。
单击 浏览 并定位到 TailspinToysControlLibrary \ TailspinToysControlLibrary \ bin 文件夹中。
双击将其选中的 TailspinToysControlLibrary.dll 。
TailspinToysControlLibrary 程序集的详细信息显示在 选择工具箱项 对话框。 您的自定义设计时图标显示在 TailspinToysControl 分组框。
单击 确定。
TailspinToysControl 出现在具有 TailspinToysControlLibrary.TailspinToysControl.VisualStudio.24bit.48x48.bmp 图标的工具箱,重写在运行时程序集内的图标。
后续步骤
还可以在 expression blend 中加载自定义控件和设计时程序集。 expression blend 4 开始,您在 资产 窗口的 TailspinToysControlLibrary.TailspinToysControl.Expression.4bit.48x48.png 图标显示,当您添加项后对 TailspinToysControlLibrary.dll 程序集。
通过使用 AssemblyFoldersEx 注册过程,可以部署运行时和设计时程序集。 有关更多信息,请参见 部署自定义控件和设计时程序集。