gpt4 book ai didi

.net - WinRT/UWP 帧和页面缓存 : How to create new page instance on Navigate() and keep the page instance on GoBack()

转载 作者:行者123 更新时间:2023-12-02 06:07:39 26 4
gpt4 key购买 nike

我正在尝试使用 C# 创建 UWP(通用 Windows 应用程序)应用程序。我的问题是 Frame 控件:如果我在没有 NavigationCacheMode = required 的情况下使用它,则每次用户返回时,页面都不会保留在内存中,并且会重新创建。如果我将 NavigationCacheMode 设置为 RequiredEnabled,则返回可以正常工作(没有新的页面对象)但是如果我从相同类型导航到另一个页面,前一个页面对象将被回收并重用(没有新的页面实例)。

期望的行为:

有没有办法让原始 Frame 控件具有以下行为(如在 Windows Phone 中):

  1. Navigate() 上创建新页面实例
  2. 将页面实例保留在 GoBack()

我知道的唯一解决方案是创建一个自己的 Frame 控件,但这会导致其他问题(例如:缺少 SetNavigationState() 方法等...)

示例场景:

具有三个页面的简单应用程序示例:TvShowListPageTvShowDetailsPageSeasonDetailsPage

  1. TvShowListPage 是入口页面。单击 TvShow 后,导航至 TvShowDetailsPage
  2. 现在,在 TvShowDetailsPage 中选择列表中的一个季节,然后导航到 TvShowDetailsPage
  3. 如果向后导航,页面应保留在内存中以避免重新加载页面。
  4. 但是,如果用户返回 TvShowListPage 并选择另一个 TvShow,则 TvShowDetailsPage 会被回收,并且可能处于错误状态(例如,显示 Actor 枢轴而不是第一个季节枢轴)

我正在寻找默认的 Windows Phone 7 行为:导航会在页面堆栈上创建一个新页面,返回会从堆栈中删除顶部页面并显示堆栈中的上一页(存储在内存中)。

解决方案:

因为这个问题没有解决方案,所以我不得不重新实现所有分页相关的类:Page、Frame、SuspensionManager等等...

提供所有这些类的库MyToolkit可以在这里下载:https://github.com/MyToolkit/MyToolkit/wiki/Paging-Overview

引用文献:

最佳答案

因为这个问题没有解决方案,所以我不得不重新实现所有分页相关的类:Page、Frame、SuspensionManager等等...

解决方案可以在这里下载: https://github.com/MyToolkit/MyToolkit/wiki/Paging-Overview

更新:

页面类现在还提供 OnNavigatingFromAsync 方法来显示异步弹出窗口,并在需要时取消导航...

关于.net - WinRT/UWP 帧和页面缓存 : How to create new page instance on Navigate() and keep the page instance on GoBack(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11539755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com