【问题标题】:How can I open page in my Xamarin app without using navigation?如何在不使用导航的情况下在我的 Xamarin 应用程序中打开页面?
【发布时间】:2018-07-31 08:52:26
【问题描述】:

我有一个 Xamarin Forms 应用程序,它在工具栏上有 2 个按钮。目前我正在使用 FreshMVVM(它是导航)。我想加载页面而不将它们放入导航中。我不希望工具栏上有“后退”按钮,也不希望用户返回最后一页。

这是我目前推送页面的方式:

CoreMethods.PushPageModel<FirstChoicePageModel>();

我尝试将其作为模式推送,但在我按下返回之前,工具栏按钮不起作用。如果我按下按钮,我应该制作新的导航容器并切换到它们吗?

【问题讨论】:

  • 我认为您可以通过在内容页面中呈现 contentview 来实现,内容页面将充当您的 contentview 页面的容器

标签: c# forms xamarin .net-core


【解决方案1】:

我使用 FreshMVVM 已经有一段时间了,但如果我没记错的话,你有两个选择:

  1. 如果你想完全重置导航堆栈,你可以做CoreMethods.PushPageModelWithNewNavigation&lt;FirstChoicePageModel&gt;();
  2. 如果要保留导航堆栈,可以在视图后面的代码中设置NavigationPage.SetHasBackButton(this, false);

对于这两个选项,可能需要拦截 Android 上的后退按钮。在后面的代码中有一个可覆盖的方法:

protected override bool OnBackButtonPressed()
{
    return true; // prevent Xamarin.Forms from processing back button
}

【讨论】:

  • 感谢您的评论!我做了第一个建议,但我现在很困惑。工具栏上的后退按钮不见了,这很好。但是我可以使用物理后退按钮返回上一页。我不想要那个。为什么我可以回到以前的导航堆栈? (另外,我认为我对导航堆栈的理解存在一些错误。)
  • @Laszlo 我不确定为什么导航堆栈仍然存在。就像我说的,我已经有一段时间没有使用那个框架了。请参阅我对 Android 后退按钮的编辑。
【解决方案2】:

如果您想显示一个页面,但又不想导航(更改当前页面),您可以随时使用 Popups。

查看此链接https://github.com/rotorgames/Rg.Plugins.Popup

【讨论】:

  • 谢谢,如果我不能解决这个问题,我会用这个。
猜你喜欢
  • 1970-01-01
  • 2016-11-20
  • 2013-07-18
  • 1970-01-01
  • 2021-11-13
  • 2013-10-15
  • 1970-01-01
  • 2016-01-19
  • 1970-01-01
相关资源
最近更新 更多