当我导航到特定页面时,我想清除整个导航历史记录(包括上一页)。所以我在该特定页面类型的OnNavigated方法中编写以下代码。
Shell.HamburgerMenu.NavigationService.ClearCache();
Shell.HamburgerMenu.NavigationService.ClearHistory();
this.Frame.BackStack.Clear();
BootStrapper.Current.NavigationService.ClearCache();
BootStrapper.Current.NavigationService.ClearHistory();
以上方法清除除缓存中以前访问过的页面之外的所有导航历史记录。
我们还需要清除之前访问过的页面以及其他页面。
请告诉我们如何解决此问题。
答案 0 :(得分:1)
var currentFrame = this.GetRootFrame();
if (currentFrame != null && currentFrame.CanGoBack)
currentFrame.BackStack.RemoveAt(currentFrame.BackStackDepth);
答案 1 :(得分:0)
我不确定你为什么打电话
Shell.HamburgerMenu.NavigationService.ClearCache() / ClearHistory().
你永远不知道整行代码何时会改变,你将不得不稍后再回来改变它。
从MVVM文件夹继承INavigable
或ViewModelBase
,它将具有您可以调用的覆盖
//NavigationService comes from ViewModelBase.... Template10.Mvvm namespace
if(NavigationService.CanGoBack)
NavigationService.ClearHistory();
NavigationService
在应用程序开始时初始化。
我使用上面两行代码完全按照你的要求,它按预期工作。它可以防止我的用户从登录屏幕返回正常屏幕
对于等式的缓存侧,关闭每个页面上的缓存。目前我不相信我们在T10中有一个全球性的,或者是否有一个。
上一个答案发布的代码或多或少是ClearHistory() / ClearCache() methods
n.b。 ClearCache
现在在当前代码分支中已过时,在NavigationService
上为T10