2016-12-18 57 views
0

我想確認我是否正確使用帶有xamarin格式的棱鏡導航服務。我有一個主詳細頁面,一個樣式化的導航頁面和一堆內容頁面。以xamarin格式正確使用棱鏡導航服務

現在我以下列方式使用該服務:

  var prj = await dataService.GetLwdProject(appState.SelectedProjectId); 
      var nparam = new NavigationParameters(); 
      nparam.Add("Project", prj); 
      await NavigateTo("RootPage/StyledNavigationPage/SessionsListPage", nparam); 

其中主詳細頁面是RootPage對象。因此,期待的是,當用戶從該列表頁面選擇一個項目以正確的方式到服務應該是:

   var nparma = new NavigationParameters(); 
       nparma.Add("Session", option); 
       await App.NavigateTo("RootPage/StyledNavigationPage/SessionsListPage?ProjectId=" + option.ProjectId + "/LocationListPage", nparma); 

我期待什麼,只是一個LocationListPage將被添加到導航堆棧,但是當我使用的在android上的硬件後退按鈕看起來不僅僅是最後一頁被添加,而是整個路徑(所有頁面)。那麼這是否是自動構建所需路徑的正確方法?

回答

0

編號導航總是相對於你所說的。你現在擁有的將會導航到你每次創建的整個深層鏈接。只需導航到您的目標NavigationPage/SessionListPage並傳遞您的參數。雖然,在這種情況下,每次都不會得到新的頁面,因爲您正在瀏覽相同的視圖,但只是傳遞不同的狀態。

+0

我構建整個修補程序的原因是,這是我發現以預期方式創建頁面的唯一方法。在路徑上: RootPage/StyledNavigationPage/SessionsListPage它本質上是一個帶有指向SessionsListPage的導航頁面的主詳細信息頁面,如果我只是編寫導航到LocationListPage,則只顯示一個簡單的內容頁面,因此沒有naviagion欄或訪問主細節頁。唯一的辦法是使用硬件後退按鈕。如果我將其表示爲:StyledNavigationPage/LocationListPage,則將返回導航,但不返回按鈕。 – Snowppy

+0

你做得不對。要實現所需的行爲,您的NavigationPage應該實現INavigationPageOptions並將ClearNavigationStackOnNavigation屬性設置爲false。現在,當您從您的MasterDetail導航時,只要您將Detial添加到您的導航頁面中,它就不會重置堆棧,而是將每個頁面推入堆棧。 –