导航到同一个页面中的Windows Phone 8(navigating to same page

2019-08-18 19:06发布

在我的WP8的应用程序,我有情况我有导航从一个网页到另一个事后我需要重新加载同一页面的一些原因。

MainPage.xaml中 - >的Page1.xaml - >的Page1.xaml - >的Page1.xaml

当用户按下backkey应该回到“MainPage.xaml中”页面。

我尝试使用NavigationService.navigate()用于导航,由于某种原因,我能不能够重新加载页面。 如果我通过任何唯一的查询字符串(例如:GUID)与导航网址,我能够重新加载页面。 但是,当我按下后退按钮 - 它永远不会回到MainPage.xaml中页。

是否有实现这一目标的任何最好的方法?

Answer 1:

在查询字符串每次重新加载页面时传递(如您的随机GUID)。 在您OnNavigatedTo方法检查,如果GUID查询字符串存在。 如果它确实存在,你知道,你不希望在这个页面Navigation Stack ,因为它的重载版本,这样你就可以通过调用其删除NavigationService.RemoveBackEntry 。

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    string guid = string.Empty;
    if (NavigationContext.QueryString.TryGetValue("guid", out guid))
    {
       //guid exists therefore it's a reload, so delete the last entry
       //from the navigation stack
       if(NavigationService.CanGoBack)
          NavigationService.RemoveBackEntry();
    }
}


Answer 2:

使用NavigationService.RemoveBackEntry方法来删除最后导航堆栈条目。

您也可以删除浏览历史的所有元素:

while(service.CanGoBack)
    service.RemoveBackEntry();

然后添加你感兴趣的人。



Answer 3:

NavigationService.Navigate(new Uri("/MainPage.xaml?" + DateTime.Now.Ticks, UriKind.Relative));

你可以使用它控制下,导航到同一页



Answer 4:

因为我无法找到任何Windows 10(通用应用程式UWP UAP)关于这个问题,而这一次似乎是在谷歌搜索结果顶部重新加载页面,这里是一个解决方案:

NavigationService.Refresh();

我使用的模板10我的应用程序,所以我不知道它的问题在这里。 的lib封装的NavigationService自身INavigationService



文章来源: navigating to same page in windows phone 8