我已经工作了几天,试图弄清楚如何在隔离存储中保存和加载图像。昨天,我终于设法解决了存储它们时遇到的任何问题,但现在我需要将图像作为图标添加到菜单项中,我不知道我的代码有什么问题:
var image = new System.Windows.Controls.Image();
using(var stream = new IsolatedStorageFileStream((string) (directory + file + ext),
FileMode.Open, IsolatedStorageFile.GetUserStoreForAssembly()))
{
image.Source = (BitmapSource) new PngBitmapDecoder(stream,
BitmapCreateOptions.PreservePixelFormat,
BitmapCacheOptions.Default).Frames[0];
}
Menu menu = new Menu();
MenuItem item = new MenuItem();
item.Header = file;
item.Icon = image;
menu.Items.Add(item);
图像以正确的尺寸显示在菜单中,但它是一张空白图像。当我在Windows Photo Viewer中预览图像文件时,图像文件显示正常。
我还是C#和WPF的新手(仅使用它3个月),我正在寻找一个不需要优雅或通用的简单解决方案;它只需要工作。
答案 0 :(得分:0)
它表示我会在寻求帮助后半小时回答我自己的问题。在网上搜寻了几天试图解决它,它只是落在我的腿上。我只需要使用正确的FileAccess实例化我的流:
我刚刚更换了
using(var stream = new IsolatedStorageFileStream((string) (directory + file + ext),
FileMode.Open, IsolatedStorageFile.GetUserStoreForAssembly()))
与
using(var stream = IsolatedStorageFile.GetUserStoreForAssembly().OpenFile(
(string) (directory + file + ext), FileMode.Open, FileAccess.Read))