我想要的只是一个关于应用程序启动的主页,带有弹出菜单。在弹出菜单中,有指向其他页面的链接。在这些页面上,它们应该有一个后退按钮,可以将您带回到主启动页面。(连同硬件后退按钮(
导航堆栈应该只有两页。主页,以及弹出菜单中的任何选项。
我没有使用AppShell,这本身就很头疼。我让MacGyver从各种关于这个主题的参考文档和视频中弹出了一个弹出页面。我有一个MainPage,它有一个按钮,PushAsync到Page2没有问题,返回按钮很好。
弹出菜单的工作原理是MainPage有汉堡图标,并且它带有菜单选项。然而,这就是它停止工作的地方。似乎导航到新页面的唯一方法是使用:
NewPage = new NavigationPage(new Page2());
使用此方法,当您单击指向另一个页面的链接时,弹出型按钮会关闭,它会加载页面,但它有汉堡图标而不是后退按钮。(我假设是因为它没有被推到堆栈中…(
我尝试过使用Navigation.PushAsync(new Page2());
的变体,但没有成功。单击/点击弹出型菜单中的页面链接时,不会发生任何事情,弹出型菜单将保持打开状态。我使用断点验证了代码是否真的在运行。
如果有人想看一看,我已经将该项目上传到GitHub。:(
这对我来说很有效-它可能会被简化,并且肯定需要异常处理
void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
var item = e.CurrentSelection.FirstOrDefault() as FlyoutPageItem;
if (item != null)
{
// create the new page
var newpage = ((Page)Activator.CreateInstance(item.TargetType));
// get the navigation page
var nav = (NavigationPage)Detail;
// get the current displayed page
var page = (ContentPage)nav.CurrentPage;
// navigate to the new page
page.Navigation.PushAsync(newpage);
// hide the flyout
this.IsPresented = false;
}
}