我正在设计一个Windows 8 Metro阅读应用程序,并在右侧开始遇到导航事件的问题。为简化问题,描述如下:
有两个页面:MainPage.xaml和DetailPage.xaml。 MainPage.xaml包含一个列表视图,该项目是一个文章对象(从网上下载文章项目),点击一个项目。框架将使用
void ItemView_ItemClick(object sender, ItemClickEventArgs e)
{
// Navigate to the appropriate destination page, configuring the new page
// by passing required information as a navigation parameter
this.Frame.Navigate(typeof(DetailPage), e.ClickedItem);
}
阅读完整篇文章后,用户将点击“GoBack”按钮,该按钮定义为
<Button x:Name="backButton" Click="GoBack" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}"/>
然后出现问题,假设Frame刚刚导航回MainPage,但导航后,MainPage中的DataContext丢失了,MainPage的构造函数再次被调用,获取了Web资源。 / p>
作为一名Windows Phone开发人员,我对此问题感到困惑。可以有人帮助我。
提前致谢。
答案 0 :(得分:2)
WinRT / XAML中Page.NavigationCacheMode指定的默认行为与Windows Phone上的PhoneApplicationPage不同。默认为NavigationCacheMode。已禁用,而您可能希望使用NavigationCacheMode.Enabled或.Required使其按预期工作。
答案 1 :(得分:1)
我blogged about this problem在这里,希望它有所帮助。
即使在启用NavigationCacheMode之后,与Windows Phone相比,有一件事情有所不同:在向后导航和向前导航时使用缓存。在Windows Phone中,在向前导航时始终会创建一个新实例。
在我的Windows 8应用程序中启用NavigationCacheMode后,我遇到了内存使用方面的一些问题,因此您应该跟踪一件事。