我正在构建一个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());
它导航到该页面,但缺少菜单。
如果在过去的几天我一直在为此而苦苦挣扎,如果有人可以帮助我,我将非常感激。
答案 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)
我遇到了同样的问题,问题是标题丢失了。
将标题添加到内容页面后,所有内容都像魅力一样发挥作用……