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

C# 在WP8应用程序的页面之间传递数据,c#,xaml,windows-phone-8,C#,Xaml,Windows Phone 8,我正在构建一个简单的运动跟踪器应用程序。我想在第1页启动一个dispatchermer和一个geocordinatewatcher,在第2页我想要一个地图视图。我正在寻找如何在页面之间传递计时器和观察者值的最佳实践,以便在地图上显示更新的信息 我看到过将其保存到XML或IsoStorage的建议。此问题的最佳解决方案是什么?您可以直接在页面之间传递字符串: NavigationService.Navigate(new Uri("/destinationPage.xaml?dataKey="+da

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


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

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

NavigationService.Navigate(new Uri("/destinationPage.xaml?dataKey="+dataValue.ToString()));
如果要传递对象,首先命中的是:

NavigationService.Navigate(new Uri("/destinationPage.xaml?dataKey="+dataObject.ToString()));
问题来了:
1) 您需要在目标页面中反序列化对象。甚至更糟,
2) 内存问题。假设您需要传递一张图像(以4100万像素拍摄),但不允许使用这么多内存:
这是另一个解决方案:

PhoneApplicationService.Current.State["yourparam"] = param;
然后导航到目标页面,您可以访问您的对象:

var k = PhoneApplicationService.Current.State["yourparam"];
注意:这个东西会将您的对象写入独立的存储中。所以可能有点慢。
第三种选择:
使用静态类在页面之间保存数据值。比如:

static class Transporter
{
    public static object container;
}
现在,您可以在源页面中编写:

Transporter.container = MyGeoCoordinateWatcherObj;
您可以在目标页面中访问此项。(这里仍然存在内存问题,但您可以安全地使用它。)

注意:有时microsoft建议使用mvvm模式来传递对象。

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

NavigationService.Navigate(new Uri("/destinationPage.xaml?dataKey="+dataValue.ToString()));
如果要传递对象,首先命中的是:

NavigationService.Navigate(new Uri("/destinationPage.xaml?dataKey="+dataObject.ToString()));
问题来了:
1) 您需要在目标页面中反序列化对象。甚至更糟,
2) 内存问题。假设您需要传递一张图像(以4100万像素拍摄),但不允许使用这么多内存:
这是另一个解决方案:

PhoneApplicationService.Current.State["yourparam"] = param;
然后导航到目标页面,您可以访问您的对象:

var k = PhoneApplicationService.Current.State["yourparam"];
注意:这个东西会将您的对象写入独立的存储中。所以可能有点慢。
第三种选择:
使用静态类在页面之间保存数据值。比如:

static class Transporter
{
    public static object container;
}
现在,您可以在源页面中编写:

Transporter.container = MyGeoCoordinateWatcherObj;
您可以在目标页面中访问此项。(这里仍然存在内存问题,但您可以安全地使用它。)

注意:有时microsoft建议使用mvvm模式来传递对象。

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

NavigationService.Navigate(new Uri("/destinationPage.xaml?dataKey="+dataValue.ToString()));
如果要传递对象,首先命中的是:

NavigationService.Navigate(new Uri("/destinationPage.xaml?dataKey="+dataObject.ToString()));
问题来了:
1) 您需要在目标页面中反序列化对象。甚至更糟,
2) 内存问题。假设您需要传递一张图像(以4100万像素拍摄),但不允许使用这么多内存:
这是另一个解决方案:

PhoneApplicationService.Current.State["yourparam"] = param;
然后导航到目标页面,您可以访问您的对象:

var k = PhoneApplicationService.Current.State["yourparam"];
注意:这个东西会将您的对象写入独立的存储中。所以可能有点慢。
第三种选择:
使用静态类在页面之间保存数据值。比如:

static class Transporter
{
    public static object container;
}
现在,您可以在源页面中编写:

Transporter.container = MyGeoCoordinateWatcherObj;
您可以在目标页面中访问此项。(这里仍然存在内存问题,但您可以安全地使用它。)

注意:有时microsoft建议使用mvvm模式来传递对象。

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

NavigationService.Navigate(new Uri("/destinationPage.xaml?dataKey="+dataValue.ToString()));
如果要传递对象,首先命中的是:

NavigationService.Navigate(new Uri("/destinationPage.xaml?dataKey="+dataObject.ToString()));
问题来了:
1) 您需要在目标页面中反序列化对象。甚至更糟,
2) 内存问题。假设您需要传递一张图像(以4100万像素拍摄),但不允许使用这么多内存:
这是另一个解决方案:

PhoneApplicationService.Current.State["yourparam"] = param;
然后导航到目标页面,您可以访问您的对象:

var k = PhoneApplicationService.Current.State["yourparam"];
注意:这个东西会将您的对象写入独立的存储中。所以可能有点慢。
第三种选择:
使用静态类在页面之间保存数据值。比如:

static class Transporter
{
    public static object container;
}
现在,您可以在源页面中编写:

Transporter.container = MyGeoCoordinateWatcherObj;
您可以在目标页面中访问此项。(这里仍然存在内存问题,但您可以安全地使用它。)
注意:有时microsoft建议使用mvvm模式来传递对象。

go with link go with link go with link go with link go with link