如何告诉父母弹出当前模式并重定向到 NavigationPage

Posted

技术标签:

【中文标题】如何告诉父母弹出当前模式并重定向到 NavigationPage【英文标题】:How to tell parent to pop current modal and redirect to NavigationPage 【发布时间】:2018-02-03 16:00:44 【问题描述】:

我有一个 Xamarin 应用程序,其中我的 MainPage 是一个导航页(内容页)。在此导航页面中,我打开模式。

在我在 MainPage 中打开的模式中,我想使用 Navigation.PushAsync 但这需要 NavigationPage 上下文,而模式页面不是。

我读到流程是:

    告诉父/调用者弹出当前可见模式 告诉家长/来电者 导航到我想要的页面,使用Navigation.PushAsync

但是,您如何做到这一点?你如何告诉父母这样做并实际进行导航?

【问题讨论】:

您应该能够使用Application.Current.MainPage.Navigation 在模态级别执行此操作。推荐的方法是为 INavigation 和 access context through dependency service or your app's DI container 创建几个扩展方法 【参考方案1】:

我会使用事件处理程序来完成这项工作:

这是一个示例代码: 应用程序.cs

public class App : Application

    public App()
    

        MainPage = new NavigationPage(new PushedNavigationPage());
        


PushedNavigationPage 页面:

public class PushedNavigationPage: ContentPage
       

   public PusehdNavigationPage()
   


           

   public void DoPushModalOnButtonClick()
   
      var pushedModalPage = new PushedModalPage();
      pushedModalPage.DoPush += HandleDoPush;
      Navigation.PushModalAsync(pushedModalPage);
   

   private void HandleDoPush(object sender, EventArgs e)
   
       Navigation.PopModalAsync();
       Navigation.PushAsync(//the page you want to push)
   

PushedModalPage

public class PushedModalPage : ContentPage

   public event EventHandler DoPush;  
    //call this on putton click or whenever you want
    private void OnDoPush()
    
        if (DoPush!= null)
        
            DoPush(this, EventArgs.Empty);
        
         

我还没有等待异步方法,但最好这样做,这只是一个例子,但我认为你应该明白这一点..

【讨论】:

以上是关于如何告诉父母弹出当前模式并重定向到 NavigationPage的主要内容,如果未能解决你的问题,请参考以下文章

如何关闭弹出窗口并重定向到Django View中的另一个页面?

更新数据库记录并重定向到不同页面的动态操作

单击按钮时弹出关闭并重定向到不同的页面!

wc_logout_url 没有确认并重定向到 Wordpress WooCommerce 中的当前页面

passport.js ,在弹出窗口中进行身份验证后,将其关闭并重定向父窗口

如何检测回访者并重定向到特定 URL? [关闭]