我只是通过传递byte[]
在两页之间传递图像,然后尝试使用以下代码将byte[]
转换为第2页中的图像,
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if (e.Uri.OriginalString.Contains("img"))
{
expenseDetails = AuthOrgClass.expenseDetails;
imgData = NavigationService.GetImageNavigationData();
fill();
}
}
private void fill()
{
var bitmapImage = new BitmapImage();
var memoryStream = new MemoryStream(imgData);
bitmapImage.SetSource(memoryStream);
ImageBox.Source = bitmapImage;
}
执行第bitmapImage.SetSource(memoryStream);
行时
我得到了例外
System.Windows.ni.dll中出现“System.Exception”类型的异常,但未在用户代码中处理
可能是什么问题?
答案 0 :(得分:1)
您应该使用IsolatedStorageSettings将图像存储为字节数组。 IsolatedStorageSettings可在所有应用程序中访问。因此,您可以轻松地在应用程序的任何页面之间传递字节数组。试试这可能会对你有帮助。
SaveImageAsByteArray()
{
IsolatedStorageSettings MemorySettings = IsolatedStorageSettings.ApplicationSettings;
if (MemorySettings.Contains("ImageData"))
MemorySettings["ImageData"] = your byte array;
else
MemorySettings.add("ImageData", your byte array;);
IsolatedStorageSettings.ApplicationSettings.Save();
}
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if (e.Uri.OriginalString.Contains("img"))
{
fill();
}
}
private void fill()
{
IsolatedStorageSettings MemorySettings = IsolatedStorageSettings.ApplicationSettings;
if (MemorySettings.Contains("ImageData"))
byte[] bytes = MemorySettings["ImageData"]
MemoryStream stream = new MemoryStream(bytes);
BitmapImage image = new BitmapImage();
image.SetSource(stream);
ImageBox.Source = image;
}
答案 1 :(得分:0)
最佳实践是在App.xaml.cs中获取全局Image varible,在第一页分配它并在第二页从中获取值。它永远不会产生问题.. :)