想要调用 RootFrame.GoBack();多次用于WindowsPhone

本文关键字:用于 WindowsPhone 调用 RootFrame GoBack | 更新日期: 2023-09-27 18:35:24

我正在编辑我的应用程序的导航。目前,页面的堆栈跟踪将有 3 层深

主页> 选择视图>添加新项目

在"添加新项目"页面中,我有一个取消按钮,我想导航到主页。我目前将信使连接到 App.xaml .cs在那里我听消息并尝试使用代码导航两次:

for (int i = 0; i <= navigationMessage.BackKeyTimes; i++)
{
    if (RootFrame.CanGoBack)
    {
        RootFrame.GoBack();
    }
}

但是,无论我循环浏览多少次,我都只能导航到之前的"选择视图"页面。Microsoft是否对您可以返回的页面数量施加了一些限制?

想要调用 RootFrame.GoBack();多次用于WindowsPhone

正如方法的名称RootFrame.GoBack();已经说过的那样,它应该只用于在导航堆栈上导航一个页面

您可以在此处执行以下操作:

private void Cancel()
{
    // Delete "Selection View" from the navigation stack
    NavigationService.RemoveBackEntry();
    // Navigate back to the MainPage
    NavigationService.Navigate(new Uri("/MainPage.xaml?clear=true", UriKind.Relative));
}

在主页上,现在可以查询 OnNavigatedTo 方法中的 clear 参数。如果是真的,请再次调用NavigationService.RemoveBackEntry();以从堆栈中删除"添加新项"页面(您从中导航):

protected override async void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);            
    string clearParam;
    if (NavigationContext.QueryString.TryGetValue("clear", out clearParam))
    {
        if (Convert.ToBoolean(clearParam))
        {
            // Delete "Add New Item" from the navigation stack
            NavigationService.RemoveBackEntry();
        }
    }
}
通过

从导航堆栈中删除页面,在返回到主页时,您无法通过"后退"按钮导航回任何其他视图。这是你需要的吗?

请告诉我,这是否对你有用。祝你好运!