工具箱图标和嵌入资源

更新:2007 年 11 月

本主题介绍如何使用嵌入资源为 Windows Presentation Foundation (WPF) 控件指定自定义工具箱图标。

命名约定

通过遵循命名约定将工具箱图标与自定义控件关联。Visual Studio Windows Presentation Foundation (WPF) 设计器检查控件程序集中的嵌入资源,以找到相应命名的图像文件。

在最简单的情况下,将工具箱图标图像文件作为嵌入资源添加到控件的项目中。将它命名为控件名.扩展名。WPF 设计器搜索文件名与控件的类型名称匹配的资源。

下表列出了工具箱图标支持的文件类型。

  • XAML

  • BMP

  • GIF

  • JPG

  • JPEG

  • PNG

有关更多信息,请参见 演练:为控件创建自定义工具箱图标

说明:

WPF 设计器使用匹配算法找到工具箱图标的最佳资源。如果资源文件不是有效的 XAML 或图像文件,将使用下一个匹配项,直到找到一个有效的 XAML 或图像文件。XAML 图像不能包含对非系统类型的引用。

完全匹配的名称

工具箱图标命名约定支持完全匹配的资源名称。对于完全匹配的名称,通过使用以下约定命名空间.控件名.Icon.扩展名,在工具箱图标名称中包括命名空间。例如,考虑一个在 Proseware.Core.Controls 命名空间中定义的名为 ProseControl 的控件。该控件的完全匹配的 PNG 工具箱图标将命名为 Proseware.Core.Controls.ProseControl.Icon.png。

对于资源,Visual Studio 自动将文件夹转换为命名空间。因此,可以在项目中创建与您的命名空间相同的文件夹结构。请注意文件夹会影响在其中找到嵌入资源的命名空间。在前面的示例中,如果图像文件在名为 Icons 的子文件夹中,则 WPF 设计器会查找名为 Proseware.Core.Controls.Icons.ProseControl.Icon.png 的工具箱图标。

如果在定义控件的命名空间中找不到图像,则 WPF 设计器将搜索松散匹配项。

松散匹配的名称

如果 WPF 设计器找不到完全匹配的资源,则会在程序集的嵌入资源中查找松散匹配项。在前面的示例中,WPF 设计器首先搜索具有完全匹配的名称 Proseware.Core.Controls.ProseControl.Icon.扩展名 的文件。如果该搜索失败,WPF 设计器将忽略命名空间,而单独基于类型名查找名称。在本示例中,WPF 设计器在资源中查找名为 ProseControl.Icon.扩展名 的任何文件。如果该搜索失败,则 WPF 设计器从默认命名空间开始搜索。在本示例中,WPF 设计器查找名为 Proseware.ProseControl.Icon.扩展名 的文件。

多个图像大小

您的工具箱图标图像文件名可以包括一个可选的“Icon”字段。使用该子字符串可以为图标指定多个图像大小。

对于前面的示例中的 ProseControl 控件,WPF 设计器在资源中查找以下图像,并选择最佳匹配大小。 

  • Proseware.Core.Controls.ProseControl.Icon.Large.png

  • Proseware.Core.Controls.ProseControl.Icon.Medium.png

  • Proseware.Core.Controls.ProseControl.Icon.ReallyLarge.png

也可以省略“Icon”后面的句点来指定以下文件名。

  • Proseware.Core.Controls.ProseControl.IconLarge.png

  • Proseware.Core.Controls.ProseControl.IconMedium.png

  • Proseware.Core.Controls.ProseControl.IconReallyLarge.png

WPF 设计器基于以下规则选择工具箱图标。

  1. 向量 XAML。

  2. 两个维度的大小完全匹配。

  3. 基于大小和长宽比的最佳匹配。

基于位图的文件格式的推荐图像大小是 64 像素 x 64 像素。

WPF 设计器和 Expression Blend 对工具箱图标使用不同的图像大小。Expression Blend 对大图标大小使用 24x24,对小图标大小使用 12x12。WPF 设计器使用 16x16。

如果宿主需要的大小是 64x64 像素,并且 Proseware.Core.Controls.ProseControl.Icon.Large.png 是基于大小和长宽比的最佳匹配,将使用该文件。将检查程序集中的所有图像。如果有两个相同大小和长宽比的图像,则宿主将决定使用哪一个。

请参见

任务

演练:为控件创建自定义工具箱图标

其他资源

使用资源