将位图参数发送到另一个xaml页面

时间:2014-12-05 07:14:20

标签: windows xaml windows-phone-8.1

在Windows Phone 8.1中,我有一个ListView。我的列表中填充了ObservableColection of Pictures。在课程图片中我有pictureName和bitmapImage。 在ListView_Item_Click中,我想单击图片并将其发送到另一个xaml页面。

BitmapImage img = new BitmapImage();
img = ((Picture)e.ClickedItem).Image;//imi selectez imaginea care doresc!!
var image = new Image();
image.Source = img;
Frame.Navigate(typeof(Page2), image);  in mainpage.xaml.cs

1 个答案:

答案 0 :(得分:1)

我不会将 BitmapImage 作为 Frame.Navigate 的参数传递 - 它不可序列化,并且 SuspensionManager 会出现问题或者恢复/暂停事件。

解决方案取决于您的图像 - 它们来自何处 - 如果它是文件,那么您只需将路径传递给该文件,然后在 OnNavigated (例如)中,设置<来自文件的em> ImageSource 。

其他方法可能是在目标页面中设置 BitmapImage ,然后导航到 - 例如使用 static 属性:

public class TargetPage : Page, INotifyPropertyChanged
{
    private static BitmapImage bmpImage;
    public static BitmapImage BmpImage
    {
        get { return bmpImage; }
        set { bmpImage = value; RaisePropertyChanged("BmpImage"); }
    }
    // rest of the code

然后您可以在导航前设置图像:

TargetPage.BmpImage = img;
Frame.Navigate(typeof(TargetPage));

此外,您应该记住暂停正在恢复事件以及当您的应用已暂停时终止应用的情况。在每种情况下,您都应该以某种方式记住图像的来源 - 使用 SuspensionManager PageState 设置或其他方法。