【问题标题】:What is the Closing event in UWP Page?UWP 页面中的关闭事件是什么?
【发布时间】:2016-10-18 03:28:42
【问题描述】:

在 WPF 中,<Window... 标签上有一个Closing 事件,我们可以在其中挂钩MainWindow_OnClosing 中的一些处置代码。

但 UWP 应用中没有此类事件。我猜结尾是Unloaded,甚至没有Unloading

我刚刚将我的处理代码放在那里,但仍然感到担心。 Unloaded 事件是否适用于此类工作?有什么需要注意的吗?

【问题讨论】:

  • 您想要关闭应用程序或从页面导航的事件吗?
  • 只需要在关闭窗口时将我的SpeechRecognizer 配置在 ViewModel 上即可。
  • 我想,因为没有任何事件用于应用程序关闭。您可以使用Suspending 事件释放资源并在Resuming 事件上获取它。
  • 不要使用暂停和恢复事件。这些用于不同的功能,并且在系统关闭应用程序之前运行时间有限。此外,如果这些事件在应用程序级别而不是视图模型一上运行。检查我的处置资源的答案。
  • 这能回答你的问题吗? How to detect exit for UWP

标签: win-universal-app


【解决方案1】:

根据 MSDN,Window 类有一个 Closed 事件。 我在您发布window 组件的Closing 事件时提到了这一点,但请记住事件的备注:

当窗口关闭时发生 Closed 事件。但是,Windows 商店 应用程序通常使用单个 Window 实例,并且不会打开和关闭 额外的 Window 实例。

现在,当使用带有Pages 的主窗口的Frame 导航系统时,我建议您使用OnNavigatedToOnNavigatedFrom 事件来操作类的所有初始化和释放功能。

您可能需要注意OnNavigationFrom,因为它是在页面卸载之前立即调用的,并且不再是父框架的当前源。

一个非常简单的例子:

Windows.ApplicationModel.Resources.ResourceLoader loader;

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    loader = new Windows.ApplicationModel.Resources.ResourceLoader();
    var navigationPageContentFormat = loader.GetString("NavigationPageContent");
    var navigationPageContentWhenEmpty = loader.GetString("NavigationPageContentWhenEmpty");

    this.ParameterTextBlock.Text = String.Format(navigationPageContentFormat, e.Parameter?.ToString() ?? navigationPageContentWhenEmpty);
}

protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
    loader = null;
}

【讨论】:

  • 不幸的是,当您关闭具有特定 Page 可见的应用程序时,这似乎不会被调用。
猜你喜欢
  • 2013-05-28
  • 2021-11-22
  • 2019-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-02
  • 2019-11-27
  • 1970-01-01
相关资源
最近更新 更多