从一个内容页面导航到另一内容页面时,菜单消失了

时间:2018-09-08 14:05:20

标签: c# xamarin xamarin.forms

我正在构建一个Xamarin应用程序,该应用程序具有主详细页面布局,并且当我从另一个内容aPage导航到内容页面时。菜单在内容页面上消失。

我有三个页面:MasterDetailPage.xaml.cs,ListItemsPage.xaml.cs和DepositsPage.xaml.cs

MasterDetailPage.xaml.cs

// Constructor.
public MainPage()
{
    InitializeComponent();
    Detail = new NavigationPage(new Login());
    IsPresented = false;
}

///导航到名为ListItemsPage.xaml.cs的内容页面

OnMenuItemSelected()
{
    Detail = new NavigationPage((Page)Activator.CreateInstance(typeof(ListItemsPage));
}

单击ListItemsPage上的列表项→它应导航到另一个内容页面(Deposits.xaml),以下是我使用的代码:

Application.Current.MainPage = new NavigationPage(new DepositsPage());

它导航到该页面,但缺少菜单。

如果在过去的几天我一直在为此而苦苦挣扎,如果有人可以帮助我,我将非常感激。

2 个答案:

答案 0 :(得分:1)

使用MasterDetailPage导航时,只要您要导航但将菜单保持在侧面,就必须像用Detail替换Login一样更改ListItemPage部分,以进行导航相反,当您完成Application.Current.MainPage

时,您将更改整个“应用程序”页面

我在上面的代码中看到的另一件事是,您没有指定Master,这是应该保存菜单项的部分。

基于Xamarin文档here,您应该以这种方式定义MasterDetailsPage:

public MainPage()
{
    var menuPage = new MenuPage();
    Master = menuPage;
    Detail = new NavigationPage((Page)Activator.CreateInstance(typeof(ListItemsPage));

    menuPage.ListView.ItemSelected += OnMenuItemSelected
}

OnMenuItemSelected(object sender, SelectedItemChangedEventArgs e)
{
    var item = e.SelectedItem as MasterPageItem;
    if (item != null) {
        Detail = new NavigationPage ((Page)Activator.CreateInstance (item.TargetType));
        masterPage.listView.SelectedItem = null;
        IsPresented = false;
    }    
}

但是,上述方法希望您的MenuPage将具有一个ListView,其中每个项目都是一个菜单选项,其中包含显示菜单选项和导航所需的所有信息。

public class MenuPage : ContentPage
{
    public ListView ListView { get { return listView; } }

    public MenuPage()
    {

        Icon = "hamburger.png";
        Title = "My great application";

        var masterPageItems = new List<MasterPageItem> ();
        masterPageItems.Add (new MasterPageItem {
        Title = "List Items",
        IconSource = "list_items.png",
        TargetType = typeof(ContactsPageCS)
        });
        masterPageItems.Add (new MasterPageItem {
        Title = "Deposit",
        IconSource = "deposit.png",
        TargetType = typeof(TodoListPageCS)
        });

        ..........
    }
}

如果您遵循documentation,这应该很好。如果仍然有疑问,请回到这里。

希望这会有所帮助。-

答案 1 :(得分:0)

我遇到了同样的问题,问题是标题丢失了。

将标题添加到内容页面后,所有内容都像魅力一样发挥作用……