Xamarin Forms中弹出模态页后无法立即推送新页面问题
解决PopModalAsync后PushAsync不生效的问题
问题原因
在模态页按钮点击事件中连续调用PopModalAsync和PushAsync时,模态页弹出操作尚未完全完成,导航栈状态未及时更新,导致后续的PushAsync无法正确触发。
解决方案
方案1:通过主线程延迟执行Push操作
将PushAsync放入主线程的异步调用中,确保模态页完全弹出后再执行页面推送:
private async void Button_Clicked(object sender, EventArgs e) { await Navigation.PopModalAsync(); Device.BeginInvokeOnMainThread(async () => { await Navigation.PushAsync(new ListOfPlayers()); }); }
方案2:从根页面导航栈执行Push操作
如果模态页是从根页面弹出的,可先获取根页面的导航实例,再执行推送:
private async void Button_Clicked(object sender, EventArgs e) { var rootPage = Application.Current.MainPage as NavigationPage; await Navigation.PopModalAsync(); await rootPage.Navigation.PushAsync(new ListOfPlayers()); }
内容的提问来源于stack exchange,提问作者GreenSL
相关产品推荐
相关产品推荐

