11.1.1 添加资源
可以通过向项目添加文件,并(在Properties窗口中)将其Build Action属性设置为Resource,来添加自己的资源。这就是所需要做的全部工作-- 这确实是一个好消息。
为了更好地组织资源,可以在项目中创建子文件夹(在Solution Explorer中右击项目名称,并选择Add | New Folder菜单项),并使用这些文件夹组织不同类型的资源。图11-1显示了一个示例,该示例在一个名为Images的文件夹中包含了几个图像资源,并且在一个名为Sounds的文件夹中包含了两个音频资源。
更新以这种方式添加的资源非常容易。只需要替换文件并重新编译应用程序即可。例如,如果创建了如图11-1所示的项目,就可以在Windows浏览器中将所有新文件复制到Images文件夹中。只要替换了在项目中包含的文件的内容,就不需要在Visual Studio中再采取任何其他特殊步骤(除了实际编译应用程序之外)。
为了能够使用资源,需要注意以下两点:
不能将Build Action属性错误地设置为Embedded Resource。尽管所有的程序集都被定义为嵌入的资源,但是Embedded Resource生成操作会在另外一个更难访问的位置放置二进制数据。在WPF应用程序中,假定总是使用Resource生成类型。
不要在Project Properties窗口中使用Resource选项卡。WPF不支持这种类型的资源URI。
好奇的程序开发人员自然希望知道嵌入到程序集中的资源到底发生了什么变化。WPF将它们合并到一个单独的流中(和其他BAML资源一起)。单独的资源流使用下面的格式进行命名:AssemblyName.g.resources。在图11-1中,应用程序被命名为AssemblyResources,并且资源流被命名为AssemblyResources.g.resources。
|
| 图11-1 具有程序集资源 的应用程序 |
|
| (点击查看大图)图11-2 在Reflector中的程序集资源 |
除了所有的图像和音频文件外,还可以看到用于应用程序中窗口的BAML资源。在WPF中,文件名中的空格不会引起问题,因为Visual Studio足够智能,它能够正确地略过它们。当应用程序被编译过之后,您可能还会注意到文件名被变成了小写形式。
| 回书目 上一节 下一节 |