【问题标题】:Page state in Windows RuntimeWindows 运行时中的页面状态
【发布时间】:2014-10-09 19:54:34
【问题描述】:
我的问题是我想知道用户何时导航到该页面以及何时导航离开。所以我可以执行一些特定于页面的任务,例如subscribing and unsubscribing to events.
以前很明显,我们可以覆盖 OnNavigatedTo 和 OnNavigatingFrom 方法。但是在 Windows Phone Runtime 中,不能保证这些方法会在用户在应用之间切换时发生。
在 Windows Phone Runtime 中,如何知道用户何时打开页面以及何时离开(到另一个页面、开始屏幕或另一个应用程序)?
【问题讨论】:
标签:
c#
xaml
windows-phone-8
windows-runtime
windows-phone
【解决方案1】:
当您导航到另一个页面时 - 很简单,您处理 NavigatingFrom/NavigatedTo。如果没有 - 这也很简单 - 你不应该得到这些事件,所以在大多数情况下你应该什么都不做。我已经看到NavigatingFrom 在某些情况下被提升,当应用程序暂停并且正在从Frame 读取导航状态时,即使技术上没有发生应用内导航并且不会有匹配的NavigatedTo简历上的事件。您可能希望通过在触发NavigatingFrom 之前和之后在Suspending 事件(或Application.OnSuspending 覆盖)中设置和清除一些标志来过滤掉它,然后在页面NavigatingFrom 处理程序中为某些代码忽略它。您可能仍希望在该事件中保存页面状态,但不要取消订阅其他事件,以防应用在终止之前恢复。
Application.Suspending/Resuming 是一些您可能还感兴趣的事件,用于保存/加载整个应用程序状态或刷新数据,尽管订阅/取消订阅事件可能不太重要,因为当应用程序获取时,这些事件中的大多数应该可以不用管当您切换到另一个应用程序时会发生暂停。
Page.Loaded/Unloaded 事件是如果您想要触摸需要在可视化树中实际加载的 UI 部分时需要处理的事件,因为 NavigatedTo 发生在页面加载之前。