簡體   English   中英

在WP8應用程序中的頁面之間傳遞數據

[英]Pass data between pages in WP8 application

我正在構建一個簡單的Sports Tracker應用程序。 我想在頁面1上啟動DispatcherTimerGeoCoordinateWatcher ,在頁面2中我想要一個地圖視圖。 我正在尋找最佳實踐,即如何在頁面之間傳遞計時器和觀察者值,以便在地圖上顯示更新的信息。

我看到了將其保存為XML或IsoStorage的建議。 解決此問題的最佳方法是什么?

您可以直接在頁面之間傳遞字符串:

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"];

注意:這件事會將您的對象寫入隔離的存儲中。 所以可能有點慢。
第三種選擇:
使用靜態類在頁面之間保存dataValue。 喜歡:

static class Transporter
{
    public static object container;
}

現在,您可以在源頁面中編寫:

Transporter.container = MyGeoCoordinateWatcherObj;

您可以在目標頁面中訪問它。 (這里仍然是內存問題,但您可以安全使用它。)
注意:有時Microsoft建議使用mvvm模式來傳遞對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM