Windows 8 app dev中的GoBack()事件

时间:2012-05-18 03:00:00

标签: xaml navigation windows-8 windows-runtime winrt-xaml

我正在设计一个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开发人员,我对此问题感到困惑。可以有人帮助我。

提前致谢。

2 个答案:

答案 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后,我遇到了内存使用方面的一些问题,因此您应该跟踪一件事。