各位前辈,请教一个关于页面堆栈的问题。
之前的Wp7 页面跳转后再返回,页面中的内容还存在;而在Metro Style App中,跳转再返回后前一页面的内容就不保存了,这种情况是怎么处理的呢???
例如,在Page1中的一个文本框输入文字,跳转到Page2,再从Page2返回到Page1,这个时候Page1中的文本框被清空了。
是说这个需要我自己去处理保存整个页面的状态么?自己记录所有文本框内容、ListView的选中项、Button的状态这些的 都要自己去做保存和还原?
Him
你说的这个问题的确是这样的,页面默认情况下不会进行保存。事实上这样做的原因是每一次页面被调用,无论是第一导航到页面还是通过BackButton回到页面都会调用LoadState方法来重新生成页面。当然你也可以在Page类中将NavigationCacheMode="Enabled"这样你回到页面的时候信息都是保存内存中的,别且也会将保存页面时传入的参数再次传入。
我并不推荐设置NavigationCacheMode我建议你如果想分情况来保存页面信息的话,可以重写OnNavigatedTo()方法使用e.NavigationMode来判断是什么情况发生页面跳转。
NavigationMode的文档:
http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.navigation.navigationmode.aspx
你也可以参考这个程序生命周期管理的教程:
http://msdn.microsoft.com/en-us/library/windows/apps/hh986968.aspx
Hope this helps
Aaron Xue [MSFT] MSDN Community Support | Feedback to us Get or Request Code Sample from Microsoft Please remember to mark the replies as answers if they help and unmark them if they provide no help.