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上的硬件後退按鈕看起來不僅僅是最後一頁被添加,而是整個路徑(所有頁面)。那麼這是否是自動構建所需路徑的正確方法?
我構建整個修補程序的原因是,這是我發現以預期方式創建頁面的唯一方法。在路徑上: RootPage/StyledNavigationPage/SessionsListPage它本質上是一個帶有指向SessionsListPage的導航頁面的主詳細信息頁面,如果我只是編寫導航到LocationListPage,則只顯示一個簡單的內容頁面,因此沒有naviagion欄或訪問主細節頁。唯一的辦法是使用硬件後退按鈕。如果我將其表示爲:StyledNavigationPage/LocationListPage,則將返回導航,但不返回按鈕。 – Snowppy
你做得不對。要實現所需的行爲,您的NavigationPage應該實現INavigationPageOptions並將ClearNavigationStackOnNavigation屬性設置爲false。現在,當您從您的MasterDetail導航時,只要您將Detial添加到您的導航頁面中,它就不會重置堆棧,而是將每個頁面推入堆棧。 –