导航到Windows Phone 8中的同一页面

时间:2013-04-01 20:26:49

标签: c# navigation windows-phone-8

在我的WP8应用程序中,我的情况是我必须从一个页面导航到另一个页面,然后由于某些原因我需要重新加载同一页面。

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

当用户按下反键时,应返回“MainPage.xaml”页面。

我尝试使用NavigationService.navigate()进行导航,但有些原因我无法重新加载页面。如果我使用导航网址传递任何唯一的查询字符串(例如:Guid),我可以重新加载页面。但是,当我按下后退按钮时 - 它永远不会返回到Mainpage.xaml页面。

有没有最好的方法来实现这个目标?

4 个答案:

答案 0 :(得分:5)

每次重新加载页面时都会传入查询字符串(例如随机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();
    }
}

答案 1 :(得分:2)

使用NavigationService.RemoveBackEntry方法删除上一个导航堆栈条目。

您还可以从导航历史记录中删除所有元素:

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

然后添加您感兴趣的那个。

答案 2 :(得分:1)

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

您可以在控件下使用它来导航到同一页面

答案 3 :(得分:0)

因为我找不到任何关于此问题的Windows 10(通用应用程序UWP UAP)问题,而且这个似乎是谷歌搜索重新加载页面的最佳结果,这里有一个解决方案:

NavigationService.Refresh();

我在我的应用上使用Template 10,所以我不知道这是否重要。 lib将NavigationService封装在自己的INavigationService