Xamarin表单 - PopToRootAsync然后PushAsync不会触发

时间:2017-08-01 21:48:16

标签: xamarin xamarin.forms

我正在使用Xamarin Forms并尝试从按钮命令退出导航堆栈 - 并导航到新页面(基本上,我想"重置"历史记录后退按钮)。

_finishToolbarItem.Command = new Command(o => {
    Navigation.PopToRootAsync().ContinueWith(task => {
            Navigation.PushAsync(new StackOverflow());
        },
        TaskContinuationOptions.OnlyOnRanToCompletion
    );
}

我也试过在异步命令包装器中执行此操作:

_finishToolbarItem.Command = new Command(async o => {
    await Navigation.PopToRootAsync();
    await Navigation.PushAsync(new StackOverflow());
});

这两种方法都将我转发到根页面 - 但是跟进PushAsync()无法正常工作,尽管它按正确顺序调用。

我怎样才能"撤消" Xamarin Forms中的导航堆栈(所以"后退"按钮没有任何东西可以返回)并推送新页面?

2 个答案:

答案 0 :(得分:2)

你可以

InsertPageBefore (Page yourNewRootPage, Page firstPageInNavigationStack)

然后PopToRoot()

答案 1 :(得分:0)

试试这个:

Navigation.InsertPageBefore(new NewPage(),Navigation.NavigationStack[0]);
await Navigation.PopToRootAsync();