存储Pivot的简单方法,会话中的Hub ot ListView状态是否存在?

时间:2015-07-24 13:24:35

标签: c# xaml windows-phone windows-phone-8.1 windows-store-apps

我正在努力将我的Windows Phone Silverlight应用程序移植到Windows Universal应用程序。

现在我尝试在打开新页面时存储页面UI状态,并在用户导航回来时将其恢复。

平台的默认行为是每个导航上的创建新页面包括返回上一页。因此,它的结果是丢失了所有先前页面的UI状态。

Internet通过启用页面缓存“NavigationCacheMode = NavigationCacheMode.Enabled;”来解决它。它确实解决了UI状态的问题,但产生了新的问题。

1)向前导航时,将使用上一页,UI将显示错误的状态。

2)In / Out页面动画对于包含Pivot控件的页面效果不佳,它会在整个页面内容可见时动画所有PivotItem,直到动画结束。

因此缓存不可用。

是否存在保存UI状态的其他方法?

1 个答案:

答案 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"]
}