[英]Pass data between pages in WP8 application
我正在構建一個簡單的Sports Tracker應用程序。 我想在頁面1上啟動DispatcherTimer
和GeoCoordinateWatcher
,在頁面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.