WPF程序集资源
WPF会将引用到的资源如图片、BAML文件等编译成二进制数据嵌入到已经编译了的程序集中。
下图是一个反编译后的程序目录结构:

那么,如何向项目中添加资源?
- 向项目中添加文件
- 设置生成操作(Build Action)为Resource
- 重新编译项目
如何检索资源?
第一种方式,使用检索包装数据的对象StreamResourceInfo
StreamResourceInfo streamResourceInfo = Application.GetResourceStream(new Uri("welcome.png", UriKind.Relative));
第二种方式,访问Assembly.g.resources资源流,查找到具体的对象
GetResourceStream()方法中封装了ResourceManager和ResourceSet类,这俩个类负责管理资源系统。我们可以使用这两个类来访问资源流。
Assembly assembly = Assembly.GetAssembly(this.GetType()); string resourcesName = assembly.GetName().Name + ".g"; ResourceManager rm = new ResourceManager(resourcesName,assembly); using (ResourceSet set = rm.GetResourceSet(CultureInfo.CurrentCulture, true, true)) {UnmanagedMemoryStream memoryStream;memoryStream = (UnmanagedMemoryStream)set.GetObject("welcome.png",true); }
也可以将读取出来的Set遍历key值,来看一下具体的资源名称:
Assembly assembly = Assembly.GetAssembly(this.GetType()); string resourcesName = assembly.GetName().Name + ".g"; ResourceManager rm = new ResourceManager(resourcesName,assembly); using (ResourceSet set = rm.GetResourceSet(CultureInfo.CurrentCulture, true, true)) {foreach (DictionaryEntry item in set){MessageBox.Show(item.Key.ToString());} }
转载于:https://www.cnblogs.com/bigbosscyb/p/11334253.html
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
