【问题标题】:Xamarin.Forms Navigation.PushAsync not working in ContentViewXamarin.Forms Navigation.PushAsync 在 ContentView 中不起作用
【发布时间】:2017-11-16 23:55:37
【问题描述】:

我想导航到 Xamarin Forms 中的其他页面,但它在内容视图中不起作用。我正在使用

等待 Navigation.PushAsync(new Page2());

此代码没有给出任何错误并成功运行,但对页面没有影响。我也在内容页面中使用此代码,它在那里正常工作,但在 ContentView 的情况下它不起作用。 目前我正在使用

等待 ParentView.Navigation.PushAsync(new Page2());

它在 ContentView 中运行良好。但我收到警告说“ParentView 自 2.1.0 版起已过时。请改用 Parent。”。但是没有类似的功能

等待 Parent.Navigation.PushAsync(new Page2());

它给出了语法错误。那么,有没有其他方法可以使用 ContentView 导航到其他页面。

【问题讨论】:

  • 你可以使用App.Current.MainPage
  • @cvanbeek, Page2 上不会显示返回按钮。
  • 对不起,我的意思是从 MainPage 调用 pushasync()
  • @cvanbeek,PushAsync 出错并且 Navigation.PushAsync 无法正常工作。
  • 是语法错误吗?如果您的主页是 NavigationPage,您可以调用 (App.Current.MainPage as NavigationPage).PushAsync()

标签: c# android xamarin xamarin.forms navigation


【解决方案1】:

如果您的应用程序的MainPageNavigationPage,那么您可以随时从应用程序内部调用PushAsync()。我建议检查MainPage 的类型是否为NavigationPage,以确保您不会抛出强制转换异常。为此,只需使用以下两行代码:

if(App.Current.MainPage is NavigationPage)
    (App.Current.Mainpage as NavigationPage).PushAsync(new Page2());

【讨论】:

    【解决方案2】:

    cvanbeek 提供的解决方案不适用于我的问题,但我解决了 你必须在你的 c# 代码中使用它 问题是你必须了解代码的层次结构它是如何工作的 使用它移动到 ContentView .content 属性内的另一个页面

     ((App.Current.MainPage as MasterDetailPage).Detail as NavigationPage).Navigation.PushAsync(new page());
    

    享受人们:)

    【讨论】:

    • 我使用的是 MasterDetailPage,所以是的,您的解决方案对我有用。
    • 欢迎您:)
    • 有没有人解释为什么Navigation.PushAsync() 不起作用,但是这个?好的,Navigation 只是一个代理,但对我来说仍然没有意义。在我的情况下,NavigationDebug 模式下工作,但不是在 Release 模式下工作。
    猜你喜欢
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多