C# 导航回不同页面(UWP,模板10)

C# 导航回不同页面(UWP,模板10),c#,uwp,template10,C#,Uwp,Template10,我需要在返回时忽略一个页面,我尝试了以下操作: public override async Task OnNavigatingFromAsync(NavigatingEventArgs args) { if (args.NavigationMode == NavigationMode.Back) { args.Cancel = true; NavigationService.Navigate(typeof(MainPage)); } els

我需要在返回时忽略一个页面,我尝试了以下操作:

public override async Task OnNavigatingFromAsync(NavigatingEventArgs args)
{
    if (args.NavigationMode == NavigationMode.Back)
    {
        args.Cancel = true;
        NavigationService.Navigate(typeof(MainPage));
    } else { 
        args.Cancel = false;
    }
    await Task.CompletedTask;
}
在我导航离开的页面上,但它似乎只取消了导航


解决此问题的最佳方法是什么?

在要忽略的页面中,可以添加以下方法。这将允许从导航历史记录中删除当前页面

protected override void OnNavigatedFrom(NavigationEventArgs e)
{
    // here NavigationService is supposed to be an instance of Template10 INavigationService
    var backStack = NavigationService.FrameFacade.BackStack;
    if (backStack.Count > 0 && backStack.Last().SourcePageType == this.GetType())
    {
        backStack.Remove(backStack.Last());
    }

    base.OnNavigatedFrom(e);
}

在要忽略的页面中,可以添加以下方法。这将允许从导航历史记录中删除当前页面

protected override void OnNavigatedFrom(NavigationEventArgs e)
{
    // here NavigationService is supposed to be an instance of Template10 INavigationService
    var backStack = NavigationService.FrameFacade.BackStack;
    if (backStack.Count > 0 && backStack.Last().SourcePageType == this.GetType())
    {
        backStack.Remove(backStack.Last());
    }

    base.OnNavigatedFrom(e);
}

因为您正在设置
args.Cancel=true。这意味着你想取消导航如果我不取消,它只会继续导航回上一个不需要的页面。我不明白你的意思,你说的是“但它似乎只是取消了导航”。那你想做什么呢?用更详细的方式解释。第一句话。当“返回”导航发生时,我想要一个不同的页面。因此只需将
typeof(MainPage)
更改为另一种类型,并删除
args.Cancel=true。这将“返回”到指定的页面。(如果我理解正确)因为您正在设置
args.Cancel=true。这意味着你想取消导航如果我不取消,它只会继续导航回上一个不需要的页面。我不明白你的意思,你说的是“但它似乎只是取消了导航”。那你想做什么呢?用更详细的方式解释。第一句话。当“返回”导航发生时,我想要一个不同的页面。因此只需将
typeof(MainPage)
更改为另一种类型,并删除
args.Cancel=true。这将“返回”到指定的页面。(如果我理解正确的话)