集合中的每个图像都有一个序列化的文件路径。加载集合时,我需要从文件路径加载图像。下面的代码不起作用,因为IsolatedStorageFileStream与用于image.SetSource()的IRandomAccessStream不兼容。
public BitmapImage Image
{
get
{
var image = new BitmapImage();
if (FilePath == null) return null;
IsolatedStorageFileStream stream = new IsolatedStorageFileStream(FilePath, FileMode.Open, FileAccess.Read, IsolatedStorageFile.GetUserStoreForApplication());
image.SetSource(stream);
return image;
}
}
是否有其他代码可以实现此目的?
答案 0 :(得分:1)
您可以简单地使用WindowsRuntimeStreamExtensions.AsRandomAccessStream扩展方法:
SetSource
我测试时SetSourceAsync
阻止了应用程序,因此我使用了var file = await ApplicationData.Current.LocalFolder.CreateFileAsync(
FilePath, CreationCollisionOption.OpenIfExists);
using (var stream = await file.OpenReadAsync())
{
await image.SetSourceAsync(stream);
}
。
您也可以直接访问Isolated Storage文件夹,如下所示:
{{1}}