【问题标题】:Send bitmap parameter to another xaml page将位图参数发送到另一个 xaml 页面
【发布时间】:2014-12-05 07:14:20
【问题描述】:
在 Windows Phone 8.1 中,我有一个 ListView。我的列表中填充了 ObservableCollection 图片。在图片类中,我有 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
【问题讨论】:
标签:
windows
xaml
windows-phone-8.1
【解决方案1】:
我不会将 BitmapImage 作为 Frame.Navigate 的参数传递 - 它不可序列化并且 SuspensionManager 会出现问题或恢复/暂停事件。
解决方案取决于您的图像 - 它们来自哪里 - 如果它是一个文件,那么您可以只传递该文件的路径,然后在 OnNavigated(例如)中,设置 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));
您还应该记住 Suspending 和 Resuming 事件,以及您的应用在 Suspended 时被终止的情况。在每种情况下,您都应该以某种方式记住图像的来源 - 使用 SuspensionManager、PageState、Settings 或其他方法。