如何移除回栈页以退出应用程序



我有一个应用程序,当它第一次运行时显示一个免责声明页面。一旦你选择了接受或拒绝,你就再也看不到这个页面了。

然而,当你在第一次运行后按后退键试图关闭应用程序时,你会回到免责声明页面,然后如果你再次按它,回到主页面,然后再次退出。

这只在应用程序第一次运行时发生,但我希望应用程序在按下后退键并退出应用程序时忽略免责声明页。

除了强制一个未处理的异常错误关闭应用程序,还有其他选择吗?

提前感谢。

解决方案:在我的主页中添加以下NavigationService.RemoveBackEntry();

private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e)
{
    NavigationService.RemoveBackEntry();
    NavigationService.RemoveBackEntry();
}

我确信有一种更优雅的方法可以做到这一点,但是我很着急,所以我用下面的方法实现了它。

我有一个静态全局枚举,它存储了我访问的最后一页。假设您有pgDisclaimerpgMain页面

pgDisclaimer页的OnNavigatedTo事件中,检查控件来自何处。如果它来自pgMain,只需执行NavigationService.GoBack(),您将退出应用程序,用户将永远不会真正看到pgDisclaimer页面(甚至没有闪烁)。

编辑:找到更优雅的方式。在Mango中,您可以使用名字可怕的NavigationService.RemoveBackEntry()方法。

您应该将免责声明显示为弹出窗口而不是页面,这样您就不必担心导航和backstack问题。我在第9频道的一个视频中看到过这个:

Windows Phone:打造用户喜爱的端到端应用

演讲中涉及这个的具体部分是在26:20左右。他正在讨论一个登录页面,防止用户从应用程序中导航回来,但概念是相似的。

另外,从这篇MSDN博客文章:

我忘记了关于EULA/登录屏幕的第一条建议——不要把它们做成页面。如果你让它们成为弹出控件,你可以在任何时候显示或隐藏它们(在第一次导航;当用户点击应用程序的"受保护"部分时;暂停后;等等),它们不会占用backstack中的插槽。这应该涵盖大多数情况。

相关内容

  • 没有找到相关文章

最新更新