首页 > 设计时Silverlight中如何添加为您的Silverlight控件的工具箱图标

如何添加为您的Silverlight控件的工具箱图标

更改历史记录:

  • 首次发表于1/21/2008为Silverlight 2/VS2008/Toolkit 2008年12月推出。
  • 12/5/2009更新为Silverlight 4/VS2010/Blend3/Toolkit 11月的2009年发布。

在Silverlight运行时(例如,​​System.Windows.dll中)和SDK(如system.windows.controls.dll)的控制有很好的工具箱图标,在Visual Studio和Blend。 2008年12月发布Silverlight工具包补充说,控制工具包,在我以前的职位描述Silverlight工具包的设计时功能

自定义图标

这篇文章解释它是如何在Silverlight 2 SDK,2008年12月发布的Silverlight工具包。

在运行时间大会的控制图标

2008年12月推出的Silverlight工具包演示了如何不使用设计时间组件嵌入控件的工具箱图标。

开放Silverlight.Controls.sln(见以前的帖子,在Visual Studio 设计时功能的实现Silverlight工具包如何下载该工具包的源的更多信息):
在运行时组件时,Visual Studio视图中嵌入的图标

在记事本或开放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(下安装的%ProgramFiles%\ \的Silverlight \ 2.0 \图书馆\客户端):

在设计时组件,反射观点嵌入图标

以上Controls.Design.Icons.Calendar.bmp采取作为一个例子:

  • Controls.Design根命名空间,在其与的行<RootNamespace> Controls.Design </ RootNamespace>指定的csproj文件
  • 图标是其中Calendar.bmp文件是在源代码树的子文件夹
  • calendar.bmp是图标的资源文件的源代码树中的名称

控制图标资源命名约定

因此,从以上两个例子,我们可以看到控件的自定义工具箱图标嵌入的资源或者运行时间大会(所以你不需要船舶设计时间组件),或设计时间大会(所以你有足够的灵活性来改变图标不同的文化,如本地化它不触及运行时间组件)。 工具(Visual Studio 2008的SP1现在)尝试找到一个特殊的命名惯例为基础的图标:

  1. 资源搜索,没有扩展名的文件名称相匹配的控制类型的名称,包括命名空间,与“{的XAML |骨形态发生蛋白的PNG | GIF | JPG格式| JPEG}图标。]。”
    1. 注意子目录影响在其中嵌入的资源被发现命名空间。 例如,工具包的图标放在Microsoft.Windows.Controls子文件夹下,以避免把这个所有的图标文件名的长字符串,而SDK图标子文件夹下的所有图标。
    2. 支持的扩展名和文件类型是:XAML中,BMP,GIF,JPG格式,JPEG和PNG
    3. 推荐为位图文件格式的图像大小为64×64。
    4. [图标]的命名约定是可选的,并且允许你指定多个大小的图标的图像。 比赛遵循以下算法:
      1. 矢量的XAML
      2. 如果有一个大小完全匹配(包括尺寸),使用它
      3. 使用最接近的匹配,基于大小和长宽比
    5. 如果一个给定的资源文件是无效的XA​​ML或有效的图像文件,下一场比赛将使用,直到找到一个。
  2. 如果图像没有发现在同一个命名空间作为控制,基于单独的类型名称的一个松散的比赛,对所有资源进行搜索,如在SDK的情况下。
  3. 不同的主机使用不同的图像大小为他们的工具箱图标。
    1. Blend中使用24×24大尺寸12×12(我不认为这是在Blend 2 SP1),其体积小。
    2. 苹果酒(Visual Studio中)使用16×16的bmp文件。

指定控制在WPF设计器的工具箱图标博客文章,介绍更详细的命名约定。


为Blend3与VS2010的更新

由于这篇文章最初发表于1/21/2008,我们已经取得了两个关于控制图标的主要改进:

  • Blend 3中显示控件的图标资源库:大图标(24×24),对象和时间线的小图标(12×12)。 看到Silverlight的设计时间:7月工具包2009年的版本更新更多信息。
  • Blend 3中和Visual Studio 2010,您可以注册您的控件(及其关联的图标)。 请参阅注册与Visual Studio和Blend Silverlight控件的更多信息。
  • 图标资源的命名约定一起修改设计时组件的命名约定。 Silverlight设计时的大会,为增强设计时组件的命名约定的更多信息。 请注意, 搜索图标资源在设计时元数据加载顺序是相反的顺序 ,也就是说,Blend将搜索嵌入的图标资源控制与上面的图标资源命名约定* Expression.Design * DLL第一。只有当它未能将结合搜索共享*设计* DLL第二;,如果失败只有再次将它嵌入的图标资源搜索相应的运行时DLL;如果所有都失败了,Blend将显示为默认的图标控制。 Visual Studio 2010中没有类似的方式,但搜索*。VisualStudio.Design *。DLL第一。
  • Blend和Visual Studio现在支持更多的图标格式,缩放图标,如果没有找到所需的大中型资源(24×24和12×12的混合,和16×16的VS)。

Silverlight工具包为嵌入的图标资源使用下列命名惯例:

  • 只需键入名称(如日历),而不是使用全名(命名空间+类型,当然。System.Windows.Controls.Calendar),以避免歧义。
  • 。VisualStudio.Design *。DLL的共享。design.dll交融的图标,和Visual Studio工具箱中的图标。 VS2010的这种方式,可以显示正确的工具箱图标,如果存在在VisualStudio.Design * DLL。VS2010中如果没有,可以载入配方,规模为16×16的图标,并显示在工具箱。
  • 仅作为最后的手段(当然,以避免运送一个唯一的图标资源的设计时间大会)在运行时DLL图标资源。

你可以看到控制图标资源命名约定Silverlight工具包的源代码

Embed Blend Icons in Shared .Design.dll

Embed Visual Studio Icons in .VisualStudio.Design*.dll

Technorati的标签:
善于交际,分享!
  1. 还没有评论。
  1. 还没有引用通告。


- 一= 8