如何从FlyoutPage使用Navigation.PushAsync



我想要的只是一个关于应用程序启动的主页,带有弹出菜单。在弹出菜单中,有指向其他页面的链接。在这些页面上,它们应该有一个后退按钮,可以将您带回到主启动页面。(连同硬件后退按钮(

导航堆栈应该只有两页。主页,以及弹出菜单中的任何选项。

我没有使用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;
}
}

相关内容

  • 没有找到相关文章

最新更新