WPF中内置资源文件

来源:互联网 时间:1970-01-01

wpf中包含三种文件类型

资源文件:编译到可执行或库 WPF 程序集中的数据文件。

内容文件:与可执行 WPF 程序集具有显式关联的独立数据文件。

源站点文件:与可执行 WPF 程序集没有关联的独立数据文件。

这三种类型的文件之间的一个重要区别是:资源文件和内容文件在生成时是已知的;程序集明确地知道它们的存在。但是对于源站点文件,程序集可能完全不知道它们,或者通过 pack 统一资源标识符 (URI) 引用知道它们的存在;在后一种情况下,不能保证被引用的源站点文件实际存在。

说说资源文件的使用

如果应用程序数据文件必须始终可供某个应用程序使用,那么保证可用性的唯一方法是将其编译到应用程序的主可执行程序集中,或者它所引用的程序集中。这种类型的应用程序数据文件称为“资源文件”。

应在以下情况下使用资源文件:

在将资源文件编译到程序集中之后,不需要更新资源文件的内容。

希望通过减少文件依赖项的数量来简化应用程序分发的复杂性。

应用程序数据文件必须是可本地化的

步骤:

1.选择一个文件当中资源文件,随便的txt,xml,图片都可以的

2.添加到vs项目中。点击右键可以看到其中的action(生成操作)选项要是“resources”

3.然后写一个方法来读取内容

//我是添加了一个sn.txt文件当中资源文件,然后就是读取其中内容而言,比较简单

   Uri uri = new Uri("/sn.txt", UriKind.Relative);//这个就是所以的pack uri。            StreamResourceInfo info = Application.GetResourceStream(uri);
            Stream s = info.Stream;
            byte[] buffer = new byte[2014];
            s.Read(buffer, 0,100);
            string x = Encoding.GetEncoding("gb2312").GetString(buffer);
            MessageBox.Show(x);

 

4编译以后。生成文件就是一个exe文件。可以把exe文件放到随便的一个地方。。都可以正常读取sn.txt文件。因为sn.txt文件已经被内置到exe中了

2.内容文件的使用

内容文件是作为松散文件与可执行程序集一起分发的。虽然它们不编译到程序集中,但编译程序集时所使用的元数据建立了与每个内容文件的关联。

如果应用程序需要一组特定的应用程序数据文件,并且您希望能够更新这些文件,而无需重新编译使用它们的程序集,则应该使用内容文件。

操作步骤和资源文件很类似。也是添加一个文件到vs中

但是要将“生成操作”设置为“内容”,还要将“复制到输出目录”设置为“始终复制”或者更新复制

代码也很一样

参考上面的资源文件列子

StreamResourceInfo info = Application.GetContentStream(url);//GetResourceStream(uri);

第三源站点文件

资源文件与同其一起分发的程序集有显式关系,这一关系由 AssemblyAssociatedContentFileAttribute 定义。但是,有些情况下可能需要在程序集和应用程序数据文件之间建立隐式关系或不存在的关系,这些情况包括:

编译时文件不存在。

在运行时之前您不知道程序集将需要哪些文件。

您希望能够更新文件,而又无需重新编译与这些文件关联的程序集。

应用程序使用大型数据文件,如音频和视频,并且您希望仅在用户选择下载时才下载这些文件。

使用传统的 URI 方案可以加载这些类型的文件,如 file:/// 和 http:// 方案。

<Image Source="file:///C:/DataFile.bmp" />
<Image Source="http://www.datafilewebsite.com/DataFile.bmp" />

源站点文件的操作和前面的类似

添加到vs中文件的“生成操作”设置为“none”或无

读取方法使用GetRemoteStream

本文来自zjysky的博客,原文地址:http://zjysky.blog.hexun.com/45743830_d.html


相关阅读:
Top