有没有人知道NavigationService.Navigate
是否有任何限制或者在尝试导航回自身时没有调用页面默认构造函数?所以我要说我在MainPage.xaml上,我做了一些事情,想要使用NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.RelativeOrAbsolute));
重定向回自己。我现在已经有了这个,并在默认构造函数中设置了一个断点,当我尝试将页面导航回自身时,它永远不会被击中。
编辑:从我的测试来看,似乎它自我缓存。我通过在我的导航"/MainPage.xaml?z=" + DateTime.Now.ToLocalTime()
中放置一个查询字符串变量来测试这个理论,它以这种方式点击构造函数,但不是仅仅导航回“MainPage.xaml”。
答案 0 :(得分:2)
这可能会对你有帮助。
NavigationService.Navigate(new Uri(string.Format("/MainPage.xaml?Refresh=true&random={0}", Guid.NewGuid()), UriKind.Relative));
答案 1 :(得分:2)
如果您正在使用NavigationService.navigate(...),它将创建一个新页面,并且将调用构造函数,因为它正在创建一个新对象但是如果调用是像
那样NavigationService.goback()
它将返回并调用onNavigated()方法。
为了更清楚地解释它你可以认为你有三个页面A,B,C和A你使用导航(到B)这将创建B页面。我们假设您使用了另一种导航方法,这将创建另一个页面C.现在,如果您使用
导航(到A)方法,页面堆栈将是A-B-C-A而goBack()将从堆栈中弹出页面
goBack()方法,页面堆栈将是A-B,另一个goback()将弹出另一个页面,只生成一个页面。
构造函数在创建时只调用一次,其余时间只调用onNavigated()方法。
答案 2 :(得分:1)
你真的想要打造构造函数吗?还有其他选择。我在构造函数中没有做任何事情。我所做的就是绑定Load的事件处理程序并在Load事件处理程序中执行所有初始化。此外,OnNavigateTo()会在您使用NavigationService.Navigate()时被点击。
如果OnNavigateTo和Load在一个代码隐藏中,OnNavigateTo先被击中,然后是Load。
我希望我回答你的问题。