在之前的 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 应用程序,因为它们从更长的时间开始就与此类似)。