我正在努力将我的Windows Phone Silverlight应用程序移植到Windows Universal应用程序。
现在我尝试在打开新页面时存储页面UI状态,并在用户导航回来时将其恢复。
平台的默认行为是每个导航上的创建新页面包括返回上一页。因此,它的结果是丢失了所有先前页面的UI状态。
Internet通过启用页面缓存“NavigationCacheMode = NavigationCacheMode.Enabled;”来解决它。它确实解决了UI状态的问题,但产生了新的问题。
1)向前导航时,将使用上一页,UI将显示错误的状态。
2)In / Out页面动画对于包含Pivot控件的页面效果不佳,它会在整个页面内容可见时动画所有PivotItem,直到动画结束。
因此缓存不可用。
是否存在保存UI状态的其他方法?
答案 0 :(得分:0)
您想要保留哪些元素?将它们保存在变量中并在导航时保存/恢复它们。
例如,如果要保留选定的轴项(_selectedItem`):
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
// Save the selected pivot item variable in the page's State dictionary.
State["SelectedPivotItem"] = _selectedItem;
}
并恢复它:
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
// Restore the selected pivot item variable from the page's State dictionary.
_selectedItem = (int)State["SelectedPivotItem"]
}