我在没有 App Shell 的 Xamarin.Forms 中使用 Flyout 菜单,并且需要使用另一个详细信息页面中的简单按钮(以编程方式)从现有的已创建页面加载详细信息页面。我怎样才能实现这个?这个动作有什么机制吗?
当然 - 您是否尝试在 Microsoft 文档 中找到示例?
假设您的应用程序主页是弹出页面(它应该是),那么您可以简单地调用:
((FlyoutPage)Application.Current.MainPage).Detail = myExistingPage
如果详细信息页面包装在
NavigationPage
中,您还可以将其用作自己的导航堆栈,在这种情况下您会这样做:
await ((FlyoutPage)Application.Current.MainPage).Detail.Navigation.PushAsync(myExistingPage);
如果您想使用另一个详细信息页面的简单按钮(以编程方式)从现有的已创建页面加载详细信息页面,您可以使用下面的代码。
private void Button_Clicked(object sender, EventArgs e)
{
FlyoutPage1 flyoutPage1 = new FlyoutPage1();
var page = (Page)Activator.CreateInstance(typeof(Page3));
page.Title = "Page3";
flyoutPage1.Detail = new NavigationPage(page);
Application.Current.MainPage = flyoutPage1;
}
有关 FlyoutPage 的更多详细信息,您可以查看下面的链接。 导航栏下方的 AppShell 弹出窗口
我像这样访问了弹出菜单。
private void BtnMenu_Clicked(object sender, EventArgs e)
{
FlyoutPage flyout = App.Current.MainPage as FlyoutPage;
if(flyout != null)
{
flyout.IsPresented = true;
}
}