从内容页面链接时如何保留汉堡菜单?

How do I preserve a hamburger menu when linking from a contentpage?

我一直在使用 MasterPageDetail 方法为我的 Xamarin Forms 应用创建汉堡菜单。从 Xamarin 文档 https://developer.xamarin.com/samples/xamarin-forms/Navigation/MasterDetailPage/ 中获取的菜单本身工作正常。我注意到的是,如果我在其中一个视图中为页面创建一个简单的 link,汉堡菜单及其图标将替换为后退按钮。

我想知道的是如何在内容页面中创建一个 link 来保留我的汉堡菜单而不是显示后退按钮。您从 MasterPage 单击的任何 link 都会带您到相应的视图,但您仍然可以看到汉堡包菜单,如果您在其中一个页面中单击 link 但是您会被带到页面,但有一个后退按钮。这给我的用户带来了非常混乱的导航体验。

下面的代码演示了刚才在汉堡菜单中是如何创建manu的。

public partial class MasterPage : ContentPage
    {
        public ListView ListView { get { return listView; } }
        public MasterPage()
        {
            InitializeComponent();

            //var master = new MasterPage();
            var masterPageItems = new List<MasterPageItem>();

            masterPageItems.Add(new MasterPageItem
            {
                Title = "Dashboard",
                IconSource = "dashboard-icon-24.png",
                TargetType = typeof(Dashboard)
            });            
            listView.ItemsSource = masterPageItems;
}

所以这很完美,你可以四处导航,汉堡菜单一直在那里。

在我名为 'dashboard' 的视图中,我添加了一些 link 希望到我的汉堡菜单中的那些相同页面,我是按照以下方式这样做的:

 <Button Text="Information" Clicked="informationClick" />

代码如下:

private void informationClick(object sender, EventArgs e)
    {
        Navigation.PushAsync(new Information());
    }

当您单击此 link 时,您会丢失汉堡菜单,取而代之的是后退按钮。我想保留汉堡包菜单,有人知道如何从我的内容页面执行此操作吗?

您必须将 MasterDetail 页面的 "Detail" 属性 替换为包含您正在链接的页面的新 NavigationPage。

类似的东西:

(App.Current.MainPage as MasterDetailPage).Detail = new NavigationPage(new ContactsPage());

这不是很干净,但它使这个想法。