在两页之间传递图像

时间:2013-12-03 12:29:12

标签: c# image windows-phone-7

我只是通过传递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”类型的异常,但未在用户代码中处理

可能是什么问题?

2 个答案:

答案 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,在第一页分配它并在第二页从中获取值。它永远不会产生问题.. :)