是在会话中存储Pivot、Hub或ListView状态的简单方法

本文关键字:ListView 状态 方法 简单 Hub 会话 存储 Pivot | 更新日期: 2023-09-27 18:04:34

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

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

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

互联网通过启用页面缓存"NavigationCacheMode = NavigationCacheMode. enabled;"来解决这个问题。它确实解决了UI状态的问题,但产生了新的问题。

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

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

缓存是不可用的

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

是在会话中存储Pivot、Hub或ListView状态的简单方法

您希望保留哪些元素?将它们保存在变量中,并在导航时保存/恢复它们。

例如,如果您想保留选中的数据透视项(_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"]
}