【问题标题】:Programmatically back out of first page of your application以编程方式退出应用程序的第一页
【发布时间】:2011-03-13 03:21:59
【问题描述】:

我有一个在首次启动时显示的登录页面。在用户输入他的凭据后,他将被带到应用程序的主页。此时,如果用户按下返回键,我希望它跳过登录页面并退出。我尝试了这里的建议:Remove a page from Navigation Stack(在 OnNavigatedTo 中,使用 NavigationService.GoBack())但它会引发异常,因为后堆栈中没有其他内容。我读了一些其他地方,不处理异常基本上是关闭应用程序的唯一方法......

这种关闭应用程序的方法的问题是,除了被破解之外,它没有命中 Application_Closing() 所以我的状态没有被保存。

有谁知道我如何在点击返回键、保存状态和退出应用程序时跳过登录页面?

提前致谢!

【问题讨论】:

    标签: silverlight windows-phone-7


    【解决方案1】:

    是的,这已成为 WP7 中导航的一个大问题 - 许多人都在抱怨同样类型的问题。需要记住的关键是,Navigation 模仿了网站的导航 - 它的行为不像 UserForm,而更像网页及其静态历史记录。

    解决这个问题的最简单的方法是让您作为用户控件引用的第一个登录页面位于您的实际主页之上(即不要使用@987654321 @ 用于您的登录页面 - 只是作为主页一部分的控件phone:PhoneApplicationPage)。在主页上的OnNavigatedTo 中使用布尔值表示“如果用户未登录,则显示登录控件,否则,仅显示主页。”

    关于保存状态(即墓碑),问另一个问题,因为那是另一个话题。

    【讨论】:

      【解决方案2】:

      一般的最佳做法是不要将页面用于导航堆栈中不需要的任何内容。

      就我而言,我选择使用弹出窗口来托管我的登录控件。如果他们没有登录,我会从我的主页弹出它。如果他们是我不显示它。这样,如果他们没有登录并回击,他们就会退出应用程序。但是,如果他们登录并在主页上,他们会看到他们的数据,如果他们回击,他们也会退出应用程序(看不到登录页面)。

      【讨论】:

        【解决方案3】:

        对于登录/主页场景,您可以做的一件事是成功登录,而不是导航到您调用“GoBack”的主页,这会将他们带回主页,但会从导航中弹出登录页面堆栈并允许用户在下次按下后退按钮时退出应用程序。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-10-22
          • 2023-03-29
          • 2011-09-13
          • 2017-12-19
          • 2011-02-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多