想要调用RootFrame.Go Back();多次为Windows Phone

时间:2013-10-14 03:53:43

标签: c# windows-phone

我正在为我的应用编辑导航。目前,页面的堆栈跟踪深度为3层,这是非常基础的:

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

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

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

然而,无论我循环多少次,我都只导航到之前的“选择视图”页面。 Microsoft是否对您可以重新访问的页数设置了一些限制?

1 个答案:

答案 0 :(得分:0)

由于方法的名称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 参数。如果 true 再次调用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();
        }
    }
}

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

请告诉我,这是否适合你。 祝你好运!