0

我正在构建一个 Windows 8 应用程序 (C#/XAML) 并使用该Frame.Navigate()属性在页面之间移动。每个页面都有一个 AppBar 图标,它将刷新页面上的数据并设置DataContext属性。这有效,并且在按下按钮后 UI 会相应更新。

当我导航到另一个页面时,我看到的问题就会出现,然后单击后退箭头返回上一页。

OnNavigatedTo(NavigationEventArgs e)方法运行时(单击后退箭头后),该e.Parameter值是旧值(在我单击刷新按钮之前,DataContext已更新)。

除了使用之外,我不知道如何更新参数值Frame.Navigate(typeof(PageTypeName), paramValue);,但我不想启动导航操作。

我的问题是两方面的。

  1. 如何保持DataContext更改,以便当我返回页面时,我设置的值通过e.Parameter方法公开OnNavigatedTo(NavigationEventArgs e)

  2. 是否有某种参考材料可以解释 Win8 应用程序中的导航生命周期?

...或者我应该以不同的方式做这件事?

4

1 回答 1

0

我找到了解决方案。

NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Required;

这告诉框架它应该始终缓存我页面的旧实例,而不是在我导航回它时创建一个新实例。

这样DataContext,当我返回页面时,我的新值不会被覆盖。

于 2012-04-15T21:55:42.197 回答