0

我正在设计一个 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);
        }

阅读全文后,用户将单击“返回”按钮,该按钮定义为

<Button x:Name="backButton" Click="GoBack" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}"/>

那么问题来了,本来应该Frame刚刚导航回MainPage,但是导航之后,MainPage中的DataContext不见了,又调用了MainPage的构造函数,获取了web资源。

作为一名 Windows Phone 开发人员,我对这个问题感到困惑。任何人都可以帮助我。

提前致谢。

4

2 回答 2

2

WinRT/XAML 中的Page.NavigationCacheMode指定的默认行为与 Windows Phone 上的 PhoneApplicationPage 不同。它默认为NavigationCacheMode .Disabled,而 NavigationCacheMode.Enabled 或 .Required 是您可能想要使用的,以使其按预期工作。

于 2012-05-18T17:22:23.337 回答
1

我在这里写了关于这个问题的博客,希望对您有所帮助。

即使在启用 NavigationCacheMode 之后,与 Windows Phone 相比也有一点不同:在向后导航和向前导航时使用缓存。在 Windows Phone 中,向前导航时总是会创建一个新实例。

在我的 Windows 8 应用程序中启用 NavigationCacheMode 后,我遇到了一些内存使用问题,因此这是您应该跟踪的一件事。

于 2012-06-20T08:26:04.070 回答