【问题标题】:How to switch pages in the Xamarin Shell without a back button?如何在没有后退按钮的 Xamarin Shell 中切换页面?
【发布时间】:2020-12-02 02:53:43
【问题描述】:

我想在基于 Shell 的 APP 顶部制作一个主页按钮。 (参考 Xanimals 应用程序。)

此主页按钮的目的是移动到 Shell 中的特定常规页面之一。

gotoasync() 函数默认将上一页添加到导航堆栈,并启用后退按钮。 我不想要后退按钮,我只想像在 Shell 结构中按下弹出按钮时那样移动。

请帮帮我。

【问题讨论】:

  • 主页键和后退键的作用是什么?或者你只是想禁用后退按钮?
  • 我想要做的是当我按下主页按钮时切换到特定页面。应该有一个菜单按钮而不是后退按钮。
  • 尝试使用Shell.Current.Navigation.PopToRootAsync() 而不是GotoAsync()
  • hmm.. 有什么方法可以在不保存上一页历史记录的情况下访问特定页面?
  • 你尝试使用Shell.Current.Navigation.PushModalAsync()方法吗?

标签: xamarin xamarin.forms navigation xamarin.forms.shell


【解决方案1】:

您可以尝试这种切换到不同导航堆栈的方法;假设主视图在您的 AppShell.xaml 中使用路由名称home 注册

await Shell.Current.GoToAsync("//home");

这是对所有路线格式的参考:

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/shell/navigation#absolute-routes

【讨论】:

    【解决方案2】:

    试试下面的方法:

    在您的主页按钮单击事件中:

    Shell.Current.CurrentItem.CurrentItem.Items.Add(Your new Page);
    Shell.Current.CurrentItem.CurrentItem.Items.RemoveAt(0);
    

    【讨论】:

    • 它按预期工作。谢谢你的回答。但这与之前尝试的方法的结果相同。 Application.Current.MainPage = new AppShell();你给我的方法是用新的page()替换新创建的页面。当我按下弹出菜单上的按钮时,我需要与先前创建的页面(不是新页面())相同的功能。
    • 由于设计的原因,似乎不可能完全达到这种效果。
    猜你喜欢
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 2019-09-16
    • 2021-10-24
    • 2015-09-03
    相关资源
    最近更新 更多