我會用事件處理程序得到這個工作做好:
下面是一個例子代碼: 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);
}
}
}
我還沒有等待異步方法,但最好這樣做,這只是一個例子,但我認爲你應該明白這一點。
你應該可以在模態級別使用'Application來做到這一點。 Current.MainPage.Navigation'。推薦的方法是創建一對INavigation和[通過依賴服務或您的應用程序的DI容器訪問上下文]的幾個擴展方法(https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/dependency-service/ ) – Ada