【问题标题】:Is the simple way to store Pivot, Hub ot ListView state in session exist?是否存在在会话中存储 Pivot、Hub ot ListView 状态的简单方法?
【发布时间】:2015-07-24 13:24:35
【问题描述】:

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

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

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

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

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

2) In/Out 页面动画不适用于包含 Pivot 控件的页面,它会在整个页面内容可见的那一刻为所有 PivotItem 设置动画,直到动画结束。

所以缓存是不可用的。

还有其他保存 UI 状态的方法吗?

【问题讨论】:

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


    【解决方案1】:

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

    例如,如果要保留选定的枢轴项(_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"]
    }
    

    【讨论】:

      猜你喜欢
      • 2014-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-21
      • 2014-06-30
      • 1970-01-01
      • 2012-02-12
      • 2012-10-10
      相关资源
      最近更新 更多