我会用事件处理程序得到这个工作做好:
下面是一个例子代码: 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