以前在Windows Phone 8.0
个应用中,我们可以通过这种方式更深入地浏览同一页面:
NavigationService.Navigate(new Uri("/SamePage.xaml", UriKind.Relative));
页面自动缓存,因此在导航回来后,用户离开时列表上的位置相同。
但是在Windows Phone Store Apps
中,我们通过这种方式更深入地浏览同一页面:
Frame.Navigate(typeof(SamePage), id);
但是在导航回来之后它会再次加载数据,所以如果用户位于长列表的中间位置,那么现在他位于顶部:
private async void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
{
// TODO: Create an appropriate data model for your problem domain to replace the sample data.
var group = await SampleDataSource.GetGroupAsync((string)e.NavigationParameter);
this.DefaultViewModel["Group"] = group;
}
如何像以前那样缓存页面,以便用户在他离开的列表中处于同一位置?
(我也包含了Windows应用程序,因为他们从较长时间开始熟悉它。)
答案 0 :(得分:6)
在您的页面构造函数中,您必须指定
public MainPage()
{
this.InitializeComponent();
this.NavigationCacheMode = NavigationCacheMode.Required;
}
答案 1 :(得分:0)
在App.cs中,您可以设置RootFrame.CacheSize,它提示操作系统应该尝试在缓存中保留多少页面。 您也许不应该在NavigationHelper_LoadState中重置datacontext - 每次导航到该页面时都会调用此方法,即使您向后导航也是如此。