Uwp 如何在退出时创建确认弹出窗口?
当用户试图关闭应用程序时,如何显示确认弹出窗口 以及如何自定义以在屏幕上显示类似的对话框 我最近写过这方面的文章 您需要订阅Uwp 如何在退出时创建确认弹出窗口?,uwp,Uwp,当用户试图关闭应用程序时,如何显示确认弹出窗口 以及如何自定义以在屏幕上显示类似的对话框 我最近写过这方面的文章 您需要订阅CloseRequested事件: SystemNavigationManagerPreview.GetForCurrentView().CloseRequested += App_CloseRequested; 然后使用延迟来确保系统等待用户确认: private async void App_CloseRequested(object sender, SystemNa
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();
}
最后,您需要在包.appxmanifest
中声明appCloseConfirm
功能,因为它是受限制的功能。在XML编辑器中打开Package.appxmanifest
,并将rescap
命名空间添加到Package
元素:
<Package ... xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap mp rescap">
<rescap:Capability Name="confirmAppClose" />
然后在
元素中添加该功能:
<Package ... xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap mp rescap">
<rescap:Capability Name="confirmAppClose" />
至于定制,你可以用任何你想要的方式显示UI,比如使用完全可定制的ContentDialog
(感谢@Johnny Westlake指出我的错误:-),或者弹出窗口
,或者在你的应用UI上方使用一些定制UI。我最近写过这方面的文章
您需要订阅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();
}
最后,您需要在包.appxmanifest
中声明appCloseConfirm
功能,因为它是受限制的功能。在XML编辑器中打开Package.appxmanifest
,并将rescap
命名空间添加到Package
元素:
<Package ... xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap mp rescap">
<rescap:Capability Name="confirmAppClose" />
然后在
元素中添加该功能:
<Package ... xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap mp rescap">
<rescap:Capability Name="confirmAppClose" />
至于定制,您可以用任何方式显示UI,比如使用完全可定制的
ContentDialog
(感谢@Johnny Westlake指出我的错误:-)),或者弹出窗口
,或者在您的应用程序UI上方使用一些定制UI。ContentDialog完全可以主题化,如果您愿意,您可以覆盖它的默认XAML,并在保持其行为和流的同时使用它做任何您想做的事情。哦,我还没有意识到它是可模板化的!酷:-)。我会更新答案(我看到了你的指南)并制作了弹出窗口,它工作正常,但我不知道如何制作自定义样式4)我会使用自定义内容对话框等待你的更新指南)。无论如何,谢谢。如果您愿意,ContentDialog是完全可主题化的,您可以覆盖它的默认XAML,并在保持其行为和流的同时对其执行任何操作。哦,我还没有意识到它是可模板化的!酷:-)。我会更新答案(我看到了你的指南)并制作了弹出窗口,它工作正常,但我不知道如何制作自定义样式4)我会使用自定义内容对话框等待你的更新指南)。无论如何,谢谢你。