如何在退出时创建确认弹出窗口?

时间:2018-10-01 13:34:15

标签: uwp

当用户尝试关闭应用程序时如何显示确认弹出窗口?

以及如何自定义以在屏幕上显示对话框?

1 个答案:

答案 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 }}或应用界面上方的一些自定义界面。