如何告诉父母弹出当前模式并重定向到 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 中的当前页面