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

时间:2017-05-18 09:22:18

标签: ios xamarin.forms master-detail

我一直在使用MasterPageDetail方法为我的Xamarin Forms应用创建汉堡包菜单。从Xamarin文档https://developer.xamarin.com/samples/xamarin-forms/Navigation/MasterDetailPage/中可以看出菜单本身运行正常。我注意到的是,如果我在我的一个视图中创建一个指向页面的简单链接,则汉堡包菜单及其图标将替换为后退按钮。

我想知道的是如何在内容页面中创建一个链接,该链接将预先设置我的汉堡包菜单,而不是显示后退按钮。您从MasterPage点击的任何链接都会带您进入相应的视图但您仍然可以看到汉堡包菜单,如果您单击其中一个页面中的链接,但是您将被带到页面但是使用后退按钮。这给我的用户造成了非常混乱的导航体验。

以下代码演示了如何在汉堡菜单中创建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'的视图中,我添加了一些链接以希望我汉堡菜单中的那些页面,我按照以下方式进行了操作:

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

此代码如下:

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

当您点击此链接时,您会丢失hambuger菜单,而是使用后退按钮重新定位。我想保留汉堡包菜单,有人知道如何从我的内容页面做到这一点吗?

1 个答案:

答案 0 :(得分:3)

您必须使用包含您要链接的页面的新NavigationPage替换MasterDetail页面的“Detail”属性。

类似的东西:

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

这不是很干净,但它提出了这个想法。