如何删除backstack页面以退出应用程序

时间:2011-10-26 18:14:38

标签: c# silverlight windows-phone-7 exit

我有一个应用程序,它在首次运行时显示免责声明页面。选择接受或拒绝后,您再也看不到该页面。

但是,当您在第一次运行后按后退键尝试关闭应用程序时,您将返回免责声明页面,然后再次点击该页面,返回主页面,然后再次退出。

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

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

提前致谢。

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

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

2 个答案:

答案 0 :(得分:3)

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

Windows Phone: building apps that customers love, end to end

介绍中涉及此问题的具体部分是在26:20左右。他正在讨论一个阻止用户导航回应用程序的登录页面,但概念类似。

此外,从此MSDN Blog Post

  

我忘记了关于EULA /登录屏幕的#1建议 - 不要把它们变成页面。如果您改为使用Popup控件,您可以随时显示或隐藏它们(在第一次导航时;当用户点击应用程序的“受保护”部分时;超时后;等等)并且它们不会消耗在后台的插槽。这应该涵盖大多数情况。

答案 1 :(得分:3)

我确信有一种更优雅的方式可以做到,但我很着急,所以我以下面的方式实现它。

我有一个静态全局枚举,用于存储我所在的最后一页。假设您有名为pgDisclaimerpgMain的网页。

OnNavigatedTo页面的pgDisclaimer事件中,检查控件的来源。如果它来自pgMain,则只需执行NavigationService.GoBack()即可离开应用程序,用户将永远不会看到pgDisclaimer页面(甚至不是闪烁)。

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