在WP8应用程序中的页面之间传递数据

本文关键字:之间 数据 WP8 应用程序 | 更新日期: 2023-09-27 17:56:13

我正在构建一个简单的运动追踪器应用程序。我想在第 1 页开始DispatcherTimerGeoCoordinateWatcher,在第 2 页中,我想要一个地图视图。我正在寻找如何在页面之间传递计时器和观察者值的最佳实践,以便我可以在地图上显示更新的信息。

我看到过将其保存到XML或IsoStorage的建议。这个问题的最佳解决方案是什么?

在WP8应用程序中的页面之间传递数据

您可以直接在页面之间传递字符串:

NavigationService.Navigate(new Uri("/destinationPage.xaml?dataKey="+dataValue.ToString()));

如果你想传递一个物体,首先要命中的是:

NavigationService.Navigate(new Uri("/destinationPage.xaml?dataKey="+dataObject.ToString()));

问题来了:
1) 您需要在目标页面中反序列化对象。甚至更糟,
2)记忆问题。假设您需要传递一个图像(以 41 兆像素捕获),并且不允许使用这么多内存:
所以这是另一个解决方案:

PhoneApplicationService.Current.State["yourparam"] = param;

然后导航到目标页面,您可以访问您的对象:

var k = PhoneApplicationService.Current.State["yourparam"];

注意:这个东西会把你的对象写在隔离的存储中。所以可能有点慢。
第三种选择:
使用静态类在页面之间保存数据值。喜欢:

static class Transporter
{
    public static object container;
}

现在,在源页面中,您可以编写:

Transporter.container = MyGeoCoordinateWatcherObj;

您可以在目标页面中访问它。(这里仍然是内存问题,但在您的情况下,您可以安全地使用它。
注意:有时微软建议使用mvvm模式来传递对象。