我使用Xamarin.Forms 2.3.1.114來構建跨平臺的應用程序。我從UWP應用程序開始,現在調試爲桌面應用程序。Xamarin:詳細的MasterDetailPage後退按鈕
這是當前的導航路徑:
主菜單(ContentPage) - >內容(MasterDetailPage)
MasterDetailPage:
- >主站(ContentPage)包含經由ListView中示出的項目的列表
- >詳細(ContentPage)從一個單一的列表項
的Xamarin文檔顯示數據說:
詳細信息頁面通過將MasterDetailPage.IsPresented屬性設置爲false呈現給用戶。
https://developer.xamarin.com/guides/xamarin-forms/user-interface/navigation/master-detail-page/
所以,我提出在母版頁的公共ListView控件,並添加代碼類同以下的MasterDetailPage:
public MyMasterDetailPage()
{
this.Master.ItemsListView.ItemSelected += MasterListView_ItemSelected;
}
private void MasterListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
if (this.Master.ItemsListView.SelectedItem == null)
{
return;
}
this.Detail.BindingContext = this.Master.ItemsListView.SelectedItem;
this.IsPresented = false;
}
詳細信息頁面顯示所選項目的詳細信息,所以這工作正常。
但是,有一個後退按鈕顯示。在詳細信息頁面上,後退按鈕將我帶回主菜單內容頁面,而不是主頁面,這將成爲我眼中的預期行爲。什麼是實現這種行爲的預期方式?
這裏是我試過:
當然,這種行爲是因爲詳細信息頁面沒有被壓入導航堆棧。在ItemSelected事件中推送那裏的Detail頁面實例會導致一個exeption,因爲它的Parent屬性已經設置。
我試過在設置MasterDetailPage的Detail屬性時在導航頁面中包裝了Detail頁面,但是這樣可以防止後退按鈕顯示,這顯然是由導航聲明導航堆棧或沿着這些行的東西導致的。我也試着讓DetailPage繼承自NavigationPage而不是ContentPage,結果相同。
我不確定我是否在這裏尋找正確的東西,在我看來,就像我對MasterDetailPages應該被使用的方式有一些誤解。任何幫助表示讚賞。
這是顯示此行爲的項目。
https://1drv.ms/u/s!At78FKXjEGEohocQQgxaZuCYT2rwMw
啓動UWP應用程序,點擊「列表」,點擊左側的任何項目。點擊後退按鈕,你應該看到我的問題。
丹尼爾你好,你說的是當前的代碼,使後退按鈕可見,你是怎麼做的?任何演示將有助於理解您的問題。如果您選擇MasterDetailPage,則使用導航頁面來適合您的場景 –
您好富蘭克林,我在帖子的末尾添加了一個有問題項目的鏈接,詳細信息頁面應該只填充TabbedPage,NavigationPage和ContentPage實例。我沒有做任何特別的事情來讓後退按鈕顯示出來,由於存在導航堆棧,它必須是自動的。 –