我正在将Windows Phone 8应用程序迁移到Windows 8.1应用程序,并且我创建了一个带有空白页面模板的页面。在那里有一些项目,如TextBlock,ComboBox和TextBox。现在,有一个项目LocationTextBlock,它周围有边框。当我点击它时,它会导航到新的Page LocationPage ,我需要选择位置并保存该对象并使用 Frame.GoBack()方法进行导航。现在问题是,当我向后导航时,我得到了LocationData的对象,但之前创建的LocationTextBlock显示为null,因此我无法在该TextBlock中填充Location。
问题
请提供一些代码或说明,是否可以使用空白页模板完成,因为我在其中添加了许多代码行。
答案 0 :(得分:1)
可以使用空白页面模板完成(尽管使用NavigationHelper将是首选方式)。 您需要做的是在Page的构造函数中将NavigationCacheMode设置为Enabled:
this.NavigationCacheMode = NavigationCacheMode.Enabled;
这样,缓存了包含其中所有属性的页面。因此,当您向后导航时,您将返回当您从中导航时页面所处的状态。但是,如果您不通过回航导航到此页面,您仍然会收到您不想要的已保存状态。解决方案是在OnNavigatedTo(NavigationEventArgs e)
方法if (e.NavigationMode != NavigationMode.Back)
中清理所有资源(初始化所需的变量,将UI元素设置为默认值等)。不知道它是否是最佳方法,但它能够发挥作用。
编辑:
您甚至可以使用Flyout或ContentDialog代替您的LocationPage,因此您无需从页面导航,因此无需缓存/保存页面。