Xaml Windows Phone 8导航回同一页面

Xaml Windows Phone 8导航回同一页面,xaml,windows-phone-8,Xaml,Windows Phone 8,有人知道导航服务.Navigate是否有任何限制,或者在尝试导航回自身时不调用页面默认构造函数吗?假设我在MainPage.xaml上,我做了一些事情,希望使用NavigationService.Navigate(新Uri(“/MainPage.xaml”,UriKind.RelativeOrAbsolute)),重定向回自己。我现在有了它,并在默认构造函数中放置了一个断点,当我尝试将页面导航回自身时,它永远不会被击中 编辑:从我的测试来看,它似乎在缓存自己。我通过在导航中添加一个queryst

有人知道
导航服务.Navigate
是否有任何限制,或者在尝试导航回自身时不调用页面默认构造函数吗?假设我在MainPage.xaml上,我做了一些事情,希望使用
NavigationService.Navigate(新Uri(“/MainPage.xaml”,UriKind.RelativeOrAbsolute)),重定向回自己。我现在有了它,并在默认构造函数中放置了一个断点,当我尝试将页面导航回自身时,它永远不会被击中

编辑:从我的测试来看,它似乎在缓存自己。我通过在导航中添加一个querystring变量来测试这个理论,
”/MainPage.xaml?z=“+DateTime.Now.ToLocalTime()
,它以这种方式命中了构造函数,而不仅仅是导航回“MainPage.xaml”。

这可能会对您有所帮助

NavigationService.Navigate(new Uri(string.Format("/MainPage.xaml?Refresh=true&random={0}", Guid.NewGuid()), UriKind.Relative));

你真的想点击构造器吗?还有其他选择。我在构造函数中不做任何事情。我所要做的就是为Load绑定一个事件处理程序,并在Load事件处理程序中进行所有初始化。另外,当您使用NavigationService.Navigate()时,OnNavigateTo()会被点击

如果在一个代码中有OnNavigateTo和Load,则OnNavigateTo首先被命中,然后被加载


我希望我回答了您的问题。

如果您使用的是NavigationService.navigate(…),它将创建一个新页面,并且构造函数将被调用,因为它正在创建一个新对象,但是如果调用类似

NavigationService.goback()

它将返回并调用onNavigated()方法

为了更清楚地解释它,您可以认为您有三个页面A、B、C,在A上您使用了导航(到B),这将创建B页面。假设您使用了另一种导航方法,这将创建另一个页面C

  • 导航(到)方法,页面堆栈将是A-B-C-A,而goBack()将从堆栈中弹出页面

  • 方法,则页面堆栈将为A-B,另一个goBack()将弹出另一个页面,从而只生成一个页面


构造函数在创建时只调用一次,其余时间只调用onNavigated()方法。

基本上,我希望重新加载所有数据和页面。我有一堆带有长列表选择器的透视项。我使用Contnex菜单可以删除特定的项目。我尝试了一些方法,比如使用.ItemSource.Remove(object)在页面上删除它,还更新了布局,但内容本身没有刷新。然后我尝试导航回自己,这样内容数据就会刷新。直到我添加了一个查询字符串,这才发生。我来自网络世界,在过去的几个月里,我开始潜入移动端、android和windows,因此我可能…更多地采用网络风格的方法,而不是移动/桌面风格的方法。iCobot,这种方法应该是删除数据库中的记录,然后从数据源重新加载数据。这将刷新列表。这是我最初采用的方法。我从存储器中删除了该文件。我更新了存储在ApplicationSettings中的值。然后重新设置以确保使用布尔标志重新加载数据。数据仍然显示,甚至在我关闭调试器并重新启动后仍然显示。您确认该文件是否从独立存储中删除了吗?你可以使用Windows Phone Power Tools附带的独立存储资源管理器来实现这一点。是的,似乎只要你调用完全相同的页面,构造函数只调用一次。一旦我添加了一个随机化querystring变量,每次我访问同一页面时都会调用构造函数。否。它与查询字符串没有区别。请给我们看更多的代码来说明发生了什么。它确实做到了。我做了各种测试,然后转到MainPage.xaml,然后转到另一个页面,再返回MainPage.xaml,调用构造函数。现在,当我尝试将MainPage.xaml重定向回自身时,没有查询字符串,它既没有调用构造函数也没有重新加载页面。它确实点击了OnNavigatedTo,但没有刷新屏幕上的内容。只有当我添加一个随机querystring变量时,它才刷新了内容。我的测试结果是相反的,除非我的手机很古怪。这是一款诺基亚lumina 520。这基本上就是我最初为了验证理论而做的。我将
DateTime.Now.ToLocalTime()
作为查询字符串值,并刷新页面。