想要调用 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();
已经说过的那样,它应该只用于在导航堆栈上导航一个页面。
您可以在此处执行以下操作:
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();
}
}
}
通过从导航堆栈中删除页面,在返回到主页时,您无法通过"后退"按钮导航回任何其他视图。这是你需要的吗?
请告诉我,这是否对你有用。祝你好运!