NavigationService.ClearHistory或ClearCache未从缓存中清除上一页

时间:2017-01-25 09:27:35

标签: uwp windows-10-universal uwp-xaml template10

当我导航到特定页面时,我想清除整个导航历史记录(包括上一页)。所以我在该特定页面类型的OnNavigated方法中编写以下代码。

Shell.HamburgerMenu.NavigationService.ClearCache();
Shell.HamburgerMenu.NavigationService.ClearHistory();
this.Frame.BackStack.Clear();
BootStrapper.Current.NavigationService.ClearCache();
BootStrapper.Current.NavigationService.ClearHistory();

以上方法清除除缓存中以前访问过的页面之外的所有导航历史记录。

我们还需要清除之前访问过的页面以及其他页面。

请告诉我们如何解决此问题。

2 个答案:

答案 0 :(得分:1)

var currentFrame = this.GetRootFrame();
if (currentFrame != null && currentFrame.CanGoBack)
    currentFrame.BackStack.RemoveAt(currentFrame.BackStackDepth);

答案 1 :(得分:0)

我不确定你为什么打电话 Shell.HamburgerMenu.NavigationService.ClearCache() / ClearHistory().你永远不知道整行代码何时会改变,你将不得不稍后再回来改变它。

从MVVM文件夹继承INavigableViewModelBase,它将具有您可以调用的覆盖

//NavigationService comes from ViewModelBase.... Template10.Mvvm namespace
if(NavigationService.CanGoBack)
   NavigationService.ClearHistory();

NavigationService在应用程序开始时初始化。

我使用上面两行代码完全按照你的要求,它按预期工作。它可以防止我的用户从登录屏幕返回正常屏幕

对于等式的缓存侧,关闭每个页面上的缓存。目前我不相信我们在T10中有一个全球性的,或者是否有一个。

上一个答案发布的代码或多或少是ClearHistory() / ClearCache() methods

中的确切代码

n.b。 ClearCache现在在当前代码分支中已过时,在NavigationService上为T10