当用户尝试关闭应用程序时如何显示确认弹出窗口?
以及如何自定义以在屏幕上显示对话框?
答案 0 :(得分:2)
我最近已经写过关于这个on my blog的文章。
您需要订阅CloseRequested
事件:
SystemNavigationManagerPreview.GetForCurrentView().CloseRequested += App_CloseRequested;
然后使用延迟来确保系统等待用户确认:
private async void App_CloseRequested(object sender, SystemNavigationCloseRequestedPreviewEventArgs e)
{
var deferral = e.GetDeferral();
var dialog = new MessageDialog("Are you sure you want to exit?", "Exit");
var confirmCommand = new UICommand("Yes");
var cancelCommand = new UICommand("No");
dialog.Commands.Add(confirmCommand);
dialog.Commands.Add(cancelCommand);
if (await dialog.ShowAsync() == cancelCommand)
{
//cancel close by handling the event
e.Handled = true;
}
deferral.Complete();
}
最后,您需要在appCloseConfirm
中声明Package.appxmanifest
功能,因为它是受限制的功能。在XML编辑器中打开Package.appxmanifest
,然后将rescap
命名空间添加到Package
元素中:
<Package ... xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap mp rescap">
然后在<Capabilities>
元素中添加功能:
<rescap:Capability Name="confirmAppClose" />
关于自定义,您可以按照想要的任何方式显示UI,例如使用完全可自定义的ContentDialog
(感谢@Johnny Westlake指出我的错误:-))或{{1 }}或应用界面上方的一些自定义界面。