读取 windows8 WinRT组件项目中的一个文件

 
假设WinRT组件项目的目录结构如下图,现在需要读取pista_454_big.jpg文件:
 

 
我在Class1中写一个名为GetFile的方法,其中的代码如下:
 
StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;
StorageFolder subfolder1 = await installedLocation.GetFolderAsync("WindowsRuntimeComponent1");
StorageFolder subfolder2 = await subfolder1.GetFolderAsync("Pictures");
StorageFile sampleFile = await installedLocation.GetFileAsync("pista_454_big.jpg");
 
由于WinRT组件是无法单独运行的,它一定要被另一个Windows Store应用程序调用的。我们可以拿到这个应用程序的安装路径(Windows.ApplicationModel.Package.Current.InstalledLocation)。然后WinRT组件在这个应用程序的安装路径下会有一个以WinRT组件名字命名的文件夹("WindowsRuntimeComponent1",在这个文件夹下面就能找到WinRT组件项目中的子文件夹了"Pictures")。
 
当然您还可以使用GetFoldersAsync来列出安装目录下的所有子文件夹。

 
URI的方式不行。在Windows Store应用程序里面我们可以用如下代码访问到WinRT组件中的图片(我们假设Windows Store应用程序的solution里面包含了名为WindowsRuntimeComponent1WinRT组件工程):
 
Uri pic = newUri(this.BaseUri, "/WindowsRuntimeComponent1/Picture/pista_454_big.jpg");
 
但是上面这行代码放到WinRT组件里面是不行的。即使类继承了FrameworkElement类,BaseUri的值也是null
 
而如果上面这行代码写在Windows Store应用程序里面,BaseUri的值就是应用程序的根目录,然后就能访问到WinRT组件里面的图片了。

posted @   贝壳笨  阅读(381)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示