2010-11-01 54 views
0

我有3頁。第1頁是搜索條件,第2頁是列表,第3頁是詳細信息。WP7確定從哪個頁面導航

如果我從第1頁轉到第2頁,我想調用Web服務並將詳細信息加載到頁面上。

如果我從頁面3轉到頁面2(即使用後退按鈕),我不想重新加載數據,因爲我已經有了它。

要確定頁面2激活時該怎麼做,我需要知道我來自哪裏。

我看不到任何告訴我這個導航事件。

任何想法?

乾杯

史蒂夫

+2

爲什麼不只是檢查你是否已經有數據? – driis 2010-11-01 19:34:14

+0

Ye if(data == null)Load();這將是最好的 – 2010-11-01 20:24:11

+0

我不能檢查我是否有數據,因爲虛擬機是單身人士,但你的建議幫助我弄清楚如何使用dataloaded標誌和使用navigatingcanceleventargs檢查我是否回到我的列表頁面或退出我的列表頁面。 – 2010-11-01 21:51:29

回答

1

沒有辦法與API/SDK做到這一點的是。

但是,您可以讓調用頁面告訴page3是什麼調用它。
如何做到這一點的一個例子是在查詢字符串中包含一個條目。即

NavigationService.NavigateTo(new Uri("page3.xaml?from=page2", UriKind.Relative)); 

然後,在第3頁:

string sourcePage; 

if (NavigationContext.QueryString.TryGetValue("from", out sourcePage)) 
{ 
    // test the value of sourcePage and act accordingly 
} 
+0

雖然這會導致一個小問題,但您的導航堆棧將保持不斷增長並且正在增長,儘管用戶他擊中了 – viggity 2010-12-17 02:19:09

+0

@viggity號您爲什麼這麼說? – 2010-12-17 11:25:44

+0

,因爲你永遠不會「回來」,你只會(導航服務考慮什麼)一個新的頁面。 – viggity 2010-12-22 17:35:48

1

或者,您可以添加新條目應用程序的資源字典,並通過重寫的OnNavigatedTo方法來檢索它的下一個頁面上。

要添加條目:

App.Current.Resources.Add("from",2); 

要檢索條目:

if(App.Current.Resources.Contains("from") 
{ 
    lastPage = (int)App.Current.Resources["from"]; 
} 

欲瞭解更多信息,請參閱查爾斯Petzold的書的第6章提供以下鏈接:
http://www.charlespetzold.com/phone/