存档

帖子标记'图标'

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

2009年1月21日 1条评论

更改历史记录:

  • 为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)中试图找到一个特殊的命名规则为基础的图标:

  1. 搜索资源的文件扩展名不匹配的控件类型的名称,包括命名空间,以“[。图标*]。(XAML中|骨形态发生蛋白|巴布亚新几内亚|的GIF | JPG格式| JPEG格式)”。
    1. 请注意,子目录影响在其中嵌入资源的命名空间被发现。 例如,该工具包的图标放在一个Microsoft.Windows.Controls子文件夹,以避免把所有的图标文件名这个长字符串,而在SDK放在一个子文件夹图标的所有图标。
    2. 支持的扩展名和文件类型有:XAML中,BMP和GIF,JPG格式,JPEG和PNG
    3. 推荐位图的文件格式图像的大小为64 × 64。
    4. 在[。图标*在命名约定]是可选的,并允许你指定的是用形象的图标多个大小。 这场比赛遵循以下算法:
      1. 矢量的XAML
      2. 如果有一个完全匹配的尺寸(包括尺寸)使用
      3. 最接近的匹配使用基于尺寸和纵横比
    5. 如果给定的资源文件是无效的XAML或一个有效的图像文件,下一场比赛将被使用,直到找到一个。
  2. 如果图像不作为对照,一个松散类型的名称相匹配的单纯基于same命名空间会被发现的资源搜索对比of所有的,如在SDK中case。
  3. 不同的主机使用的工具箱图标不同的图像大小。
    1. 混合使用24 × 24的大尺寸和12 ×为他们的小尺寸(我不认为这是在Blend 2 SP1的12个工作)。
    2. 塞德尔(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的工具包的源代码

Embed Blend Icons in Shared .Design.dll

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

Technorati的标签:

分享和欣赏:

  • Print
  • email
  • RSS
  • Twitter
  • TwitThis
  • del.icio.us
  • LinkedIn
  • Technorati
  • Facebook
  • Google Bookmarks
  • Live
  • MySpace
  • QQ书签