在桌面上运行的 UWP 应用程序可以通过顶部的 X 按钮关闭,但它没有任何事件。众所周知,在手机和平板电脑上,应用程序应该依赖Suspending
事件,无论它是如何触发的,然后应用程序应该依赖ApplicationExecutionState https://msdn.microsoft.com/EN-US/library/windows/apps/windows.applicationmodel.activation.applicationexecutionstate.aspx.
然而,这是一个(可能)常见的场景:在手机上Suspending
事件就足够了,如果正在进行 Voip 呼叫,它将在应用程序暂停后由操作系统操作。在桌面上,用户期望关闭按钮完全关闭应用程序。因此,如果正在通话,则应将其挂断并释放某些资源。
如果(且仅当)UWP 应用程序在桌面上运行时,我如何知道用户何时单击“关闭”按钮?
A 能力有限 https://learn.microsoft.com/en-us/windows/uwp/packaging/app-capability-declarations#restricted-capabilities confirmAppClose
已在 Windows 10 版本 1703(内部版本 10.0.15063)中添加,以便为应用程序提供拦截窗口关闭的能力。
清单命名空间:
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
显现:
<Capabilities>
<Capability Name="internetClient" />
<rescap:Capability Name="confirmAppClose"/>
</Capabilities>
提交给商店时需要额外批准。但随后会开火CloseRequested
事件在系统导航管理器预览版 https://learn.microsoft.com/en-us/uwp/api/windows.ui.core.preview.systemnavigationmanagerpreview实例。
Code:
public MainPage()
{
this.InitializeComponent();
SystemNavigationManagerPreview.GetForCurrentView().CloseRequested += this.OnCloseRequest;
}
private void OnCloseRequest(object sender, SystemNavigationCloseRequestedPreviewEventArgs e)
{
if (!saved) { e.Handled = true; SomePromptFunction(); }
}
您可以推迟在这里做一些工作(保存或提示),或者您可以设置Handled
设置为 true 以阻止窗口关闭(用户取消提示)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)