2017-08-25 47 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); 
     } 
    }  
} 

我還沒有等待異步方法,但最好這樣做,這只是一個例子,但我認爲你應該明白這一點。

相關問題