我正在为我的应用编辑导航。目前,页面的堆栈跟踪深度为3层,这是非常基础的:
主页>选择视图>添加新项目
从“添加新项目”页面,我有一个取消按钮,我想导航到主页面。我目前有信使连接到App.xaml.cs,我在里面听取消息,并尝试使用代码导航两次:
for (int i = 0; i <= navigationMessage.BackKeyTimes; i++)
{
if (RootFrame.CanGoBack)
{
RootFrame.GoBack();
}
}
然而,无论我循环多少次,我都只导航到之前的“选择视图”页面。 Microsoft是否对您可以重新访问的页数设置了一些限制?
答案 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时通过“后退”按钮导航回任何其他视图。这是你需要的吗?
请告诉我,这是否适合你。 祝你好运!