У меня проблема при открытии мастер-страницы.В основном я использую приложение masterdetail по умолчанию, которое создает формы xamarin, когда вы выбираете приложение MasterDetail в новом проекте.У меня есть пользовательская панель навигации, и когда я нажимаю кнопку, она показывает мастер-страницу.Я добился этого с помощью:
public ICommand OpenMenuCommand
{
get
{
return new Command(() =>
{
var mainPage = (Application.Current.MainPage as NavigationPage).CurrentPage;
(mainPage as MasterDetailPage).IsPresented = true;
});
}
}
Когда он открывается и я пытаюсь выбрать страницу для перехода, я получаю нулевое значение на корневой странице (вы можете увидеть в следующем коде):
public partial class MenuPage : ContentPage
{
MainPage RootPage { get => Application.Current.MainPage as MainPage; }
List<HomeMenuItem> menuItems;
public MenuPage ()
{
InitializeComponent ();
menuItems = new List<HomeMenuItem>
{
new HomeMenuItem {Id = MenuItemType.CLIENTS, Title="CLIENTS" },
new HomeMenuItem {Id = MenuItemType.WIZARD, Title="WIZARD" },
new HomeMenuItem {Id = MenuItemType.SETTINGS, Title="SETTINGS" },
new HomeMenuItem {Id = MenuItemType.GUIDES, Title="GUIDES AND TEMPLATES" },
new HomeMenuItem {Id = MenuItemType.HELP, Title="HELP" },
new HomeMenuItem {Id = MenuItemType.LOGOUT, Title="LOGOUT" }
};
ListViewMenu.ItemsSource = menuItems;
ListViewMenu.SelectedItem = menuItems[0];
ListViewMenu.ItemSelected += async (sender, e) =>
{
if (e.SelectedItem == null)
return;
var id = (int)((HomeMenuItem)e.SelectedItem).Id;
await RootPage.NavigateFromMenu(id);
};
}
}
Корневая страница здесь - это MainPage, но MainPage в App.cs - это страница навигации (это нужно было сделать для навигации по пользовательской панели навигации).Он хорошо работает с панелью навигации по умолчанию.
Как я могу это сделать, чтобы я мог вызвать главную страницу из пользовательской панели навигации, а также перемещаться?
PS Я не опубликовал весь кодглавной страницы и т. д., поскольку это код по умолчанию, который формы xamarin создают при выборе приложения masterdetail.
Заранее спасибо.