2017-08-25 44 views
0

我有一个Xamarin应用程序,其中我的MainPage是一个导航页面(contentpage)。在这个导航页面中,我打开了模态。如何告诉家长弹出当前模式并重定向到导航页

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

我读过的流量将是:

  1. 泰尔父/来电弹出当前可见模式
  2. 泰尔父/主叫 导航到我想要的页面,使用Navigation.PushAsync

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

+0

你应该可以在模态级别使用'Application来做到这一点。 Current.MainPage.Navigation'。推荐的方法是创建一对INavigation和[通过依赖服务或您的应用程序的DI容器访问上下文]的几个扩展方法(https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/dependency-service/ ) – Ada

回答

1

我会用事件处理程序得到这个工作做好:

下面是一个例子代码: App.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); 
     } 
    }  
} 

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

相关问题