我正在构建Windows 8应用程序(C#/ XAML)并使用Frame.Navigate()
属性在页面之间移动。每个页面都有一个AppBar图标,用于刷新页面上的数据,并设置DataContext
属性。这是有效的,按下按钮后UI会相应更新。
当我导航到另一个页面时,我看到的问题出现了,然后单击后退箭头返回上一页。
当OnNavigatedTo(NavigationEventArgs e)
方法运行时(单击后退箭头后),e.Parameter
值为旧值(在我单击刷新按钮之前,DataContext
已更新)。
除了使用Frame.Navigate(typeof(PageTypeName), paramValue);
之外,我不知道如何以任何其他方式更新参数值,但我不想发起导航操作。
我的问题有两个。
如何保留DataContext
更改,以便在我返回页面时,我设置的值会通过e.Parameter
方法中的OnNavigatedTo(NavigationEventArgs e)
公开。
是否有某种参考机制解释了Win8应用中的导航生命周期?
......或者我应该以不同的方式做这件事吗?
答案 0 :(得分:0)
我找到了解决方案。
NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Required;
这告诉框架它应该始终缓存我的页面的旧实例,而不是在我导航回它时创建一个新实例。
这样,当我返回页面时,我的新DataContext
值不会被覆盖。