C# 如何在不使用导航的情况下打开Xamarin应用程序中的页面?

C# 如何在不使用导航的情况下打开Xamarin应用程序中的页面?,c#,forms,xamarin,.net-core,C#,Forms,Xamarin,.net Core,我有一个Xamarin表单应用程序,工具栏上有两个按钮。目前我正在使用FreshMVVM(以及它的导航)。我想在不将页面放入导航的情况下加载页面。我不希望工具栏上有“后退”按钮,也不希望用户返回最后一页 以下是我当前推送页面的方式: CoreMethods.PushPageModel<FirstChoicePageModel>(); CoreMethods.PushPageModel(); 我试着将按钮作为一种模式,但这样工具栏按钮在我按下“后退”按钮之前不起作用。我是否应该制作

我有一个Xamarin表单应用程序,工具栏上有两个按钮。目前我正在使用FreshMVVM(以及它的导航)。我想在不将页面放入导航的情况下加载页面。我不希望工具栏上有“后退”按钮,也不希望用户返回最后一页

以下是我当前推送页面的方式:

CoreMethods.PushPageModel<FirstChoicePageModel>();
CoreMethods.PushPageModel();

我试着将按钮作为一种模式,但这样工具栏按钮在我按下“后退”按钮之前不起作用。我是否应该制作新的导航容器并在按下按钮时切换到它们?

我已经有一段时间没有使用FreshMVVM了,但如果我回忆正确,您有两个选项:

  • 如果要完全重置导航堆栈,可以执行
    CoreMethods.PushPageModelWithNewNavigation()
  • 如果要保留导航堆栈,可以设置
    NavigationPage.SetHasBackButton(此为false)在视图的代码隐藏中
  • 对于这两个选项,可能需要拦截Android上的后退按钮。在代码背后有一个可重写的方法:

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

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

  • 如果要完全重置导航堆栈,可以执行
    CoreMethods.PushPageModelWithNewNavigation()
  • 如果要保留导航堆栈,可以设置
    NavigationPage.SetHasBackButton(此为false)在视图的代码隐藏中
  • 对于这两个选项,可能需要拦截Android上的后退按钮。在代码背后有一个可重写的方法:

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

    如果要显示页面,但不想导航(更改当前页面),则始终可以使用弹出窗口


    查看此链接

    如果要显示页面,但不想导航(更改当前页面),则始终可以使用弹出窗口


    查看此链接

    我认为您可以通过在内容页中呈现contentview来实现,内容页将充当contentview页面的容器我认为您可以通过在内容页中呈现contentview来实现,内容页将充当contentview页面的容器谢谢您的评论!我做了第一个建议,但我现在感到困惑。工具栏上的后退按钮不见了,这很好。但我可以用物理返回按钮返回上一页。我不想那样。为什么我可以返回到以前的导航堆栈?(另外,我认为我对导航堆栈的理解有一些错误。)@Laszlo我不知道为什么导航堆栈仍然存在。就像我说的,我已经有一段时间没有使用这个框架了。查看我对Android后退按钮的编辑。谢谢你的评论!我做了第一个建议,但我现在感到困惑。工具栏上的后退按钮不见了,这很好。但我可以用物理返回按钮返回上一页。我不想那样。为什么我可以返回到以前的导航堆栈?(另外,我认为我对导航堆栈的理解有一些错误。)@Laszlo我不知道为什么导航堆栈仍然存在。就像我说的,我已经有一段时间没有使用这个框架了。查看我对Android后退按钮的编辑。谢谢,如果我无法解决此问题,我将使用此按钮。谢谢,如果我无法解决此问题,我将使用此按钮。