如何添加您的Silverlight工具箱图标控制
更改历史记录:
- 为Silverlight 2/VS2008/Toolkit首次出版发行于2008年1月21日2008年12月。
- 更新于2009年12月5日为2009年11月发布的Silverlight 4/VS2010/Blend3/Toolkit。
在Silverlight控件运行时(如system.windows.dll)和SDK(如system.windows.controls.dll)已在Visual Studio和混合好的工具箱图标。 2008年12月发布的Silverlight工具包补充,也为控制工具包,如我在以前的帖子中所描述的时代特点在Silverlight设计工具包 :
这个职位说明它是如何做的Silverlight 2 SDK和2008年12月发布的Silverlight工具包。
在运行时控制图标大会
2008年12月发布的Silverlight工具包演示如何嵌入的控件工具箱图标设计时没有使用一个集会。
开放工作室Silverlight.Controls.sln在Visual(见以前的职位设计的时代特征实现Silverlight的工具包的更多信息来源如何下载该工具包):
在记事本或打开Controls.csproj:
<ItemGroup>
<EmbeddedResource Include="Microsoft.Windows.Controls.AutoCompleteBox.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.DockPanel.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.Expander.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.Label.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.TreeView.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.Viewbox.Icon.png" />
</ ItemGroup>
在反射器或打开Microsoft.Windows.Controls.dll:
所有这三个显示,自定义工具箱图标嵌入在运行时组装Microsoft.Windows.Controls.dll资源与特定的命名约定。 以上面的例子Microsoft.Windows.Controls.Microsoft.Windows.AutoCompleteBox.Icon.png为:
- 第一Microsoft.Windows.Controls是根命名空间,“指定的文件中controls.csproj与行:<RootNamespace> System.Windows.Controls </ RootNamespace
- 接下来Microsoft.Windows.Controls.AutoCompleteBox但不大会是完全合格的名称AutoCompleteBox类,包括命名空间。
- 本,其余的名称,Icon.png指定资源类型的图标,如稍后将解释更多。
在设计时间控制图标大会
的Silverlight 2 SDK中展示了嵌入在设计时总成控制图标的方法。
打开反射System.Windows.Controls.Design.dll(它是安装在%程序文件%\微软的SDK \ Silverlight的\ 2.0 \库\客户端):
Controls.Design.Icons.Calendar.bmp以上面的例子:
- Controls.Design是根命名空间,“指定在/ RootNamespace其csproj文件与行<RootNamespace> Controls.Design <
- 子文件夹图标是其中Calendar.bmp文件源是在树
- Calendar.bmp是源名称的资源文件中的图标树
控制图标资源命名约定
因此,从上述两个例子,我们可以看到,自定义工具箱图标为controls嵌入或者run time集会资源(所以你不必需要将一个设计时装配),或设计时装配(所以你必须flexibility改变图标像本地化为不同的文化中有没有碰到运行时组装)。 这些工具(Visual Studio 2008的现在SP1)中试图找到一个特殊的命名规则为基础的图标:
- 搜索资源的文件扩展名不匹配的控件类型的名称,包括命名空间,以“[。图标*]。(XAML中|骨形态发生蛋白|巴布亚新几内亚|的GIF | JPG格式| JPEG格式)”。
- 请注意,子目录影响在其中嵌入资源的命名空间被发现。 例如,该工具包的图标放在一个Microsoft.Windows.Controls子文件夹,以避免把所有的图标文件名这个长字符串,而在SDK放在一个子文件夹图标的所有图标。
- 支持的扩展名和文件类型有:XAML中,BMP和GIF,JPG格式,JPEG和PNG
- 推荐位图的文件格式图像的大小为64 × 64。
- 在[。图标*在命名约定]是可选的,并允许你指定的是用形象的图标多个大小。 这场比赛遵循以下算法:
- 矢量的XAML
- 如果有一个完全匹配的尺寸(包括尺寸)使用
- 最接近的匹配使用基于尺寸和纵横比
- 如果给定的资源文件是无效的XAML或一个有效的图像文件,下一场比赛将被使用,直到找到一个。
- 如果图像不作为对照,一个松散类型的名称相匹配的单纯基于same命名空间会被发现的资源搜索对比of所有的,如在SDK中case。
- 不同的主机使用的工具箱图标不同的图像大小。
- 混合使用24 × 24的大尺寸和12 ×为他们的小尺寸(我不认为这是在Blend 2 SP1的12个工作)。
- 塞德尔(Visual Studio中)使用16 × 16 bmp文件。
该博客后在WPF设计器中指定一个工具箱控制图标的描述更详细的命名约定。
更新Blend3与VS2010
由于这职位是2008年1月21日出版的第一次,我们已经取得了两项重要的改进方面控制图标:
- 配方3显示控制图标太:大图标(24 × 24)在资产库,小图标)在对象和时间线(12 × 12。查看Silverlight的设计时间:2009年7月发布的更新工具包的更多信息。
- 你可以注册您的控件(及其关联的图标)的共混3和Visual Studio 2010。 看到注册的Silverlight控件与Visual Studio和配方获得更多信息。
- 对于图标资源的命名约定一起修改设计时组件的命名约定。 看到Silverlight的设计时组件的更多信息,集设计时就加强命名约定。 请注意该资源搜索图标 , 是在逆时即以元数据的加载顺序设计的配方将搜索嵌入*. dll的第一个图标资源的控制Expression.Design与*.以上图标资源的命名约定;只有当它失败将结合搜索共享的*. dll的设计*.第二位,如果再次失败,只有将它为嵌入式搜索相应的运行时DLL图标资源;如果都失败,Blend会显示为默认的图标控制。 它的Visual Studio 2010中类似的方法,但*. dll的搜索*. VisualStudio.Design第一。
- Blend和Visual Studio现在支持更多的图标格式,并会规模大小的图标,如果所需的资源(24 × 12 × 24和12的配方,对VS和16 × 16)找不到。
Silverlight的工具包使用以下命名约定资源嵌入图标:
- 使用全名(命名空间+类型,当然。System.Windows.Controls.Calendar),而不是只需要输入名称(如日历),以避免歧义。
- 把图标的交融共享。design.dll,和Visual Studio英寸VisualStudio.Design *. DLL的工具箱图标。 这样,VS2010可以显示正确的工具箱图标存在,如果一英寸VisualStudio.Design *. dll文件,如果没有,VS2010可以加载了混合图标,规模为16 × 16,并显示在工具箱内。
- 投入运行时DLL图标资源只能作为最后手段(当然,以避免航运只有一个图标资源设计时程序集)。
你可以看到控制图标资源的命名惯例Silverlight的工具包的源代码 :








最近的评论