【问题标题】:How can I Navigate to the same page and have it trigger the normal new page lifecycle?如何导航到同一页面并让它触发正常的新页面生命周期?
【发布时间】:2011-11-06 08:59:55
【问题描述】:

如果您在 MyPage.xaml 上并调用 Navigate(new Uri("MyPage.xaml", UriKind.Relative));什么都没有发生。

如何让它真正重新加载页面?

【问题讨论】:

  • 我问了这个问题,所以它会作为互联网上的资源存在,但我似乎无法回答我自己的问题,所以答案是确保您访问的是唯一的网址。您可以通过在查询字符串 NavigationService.Navigate(new Uri(string.Format("/MyPage.xaml?random={0}", Guid.NewGuid()), UriKind.RelativeOrAbsolute));例如
  • 我喜欢你所谓的“黑客”作为解决方案。您不必费心将状态恢复为零并引发一堆更改的属性。您也可以在导航离开时从 backstack 中删除当前页面条目,这样您的 backstack 不会有两次相同的页面。在我看来,hack 是理想的。

标签: windows-phone-7 navigation


【解决方案1】:

您已经说过导致页面刷新的快速而肮脏的方法。但在我看来,您可能不需要这样做。使用 Silverlight 数据绑定和提升属性更改以及页面的 MVVM 模型刷新数据似乎更合适。但是不知道用例就更难说了

另一件事是,不会导航到新页面,那是同一个页面弄乱了堆栈吗?您最终可能会遇到用户需要向后导航大量页面的情况。

【讨论】:

  • 同意,这绝对是一个肮脏的黑客,是的,你必须弹出后台堆栈。一个“更好”的方法当然是刷新页面的模型。在我的特殊情况下,它是一个 SL-XNA 游戏页面,其中有很多初始化代码,到目前为止,在这里重新启动游戏的最简单方法是导航回该页面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
相关资源
最近更新 更多