如何为MAUI Blazor Hybrid的Windows系统关闭按钮添加确认弹窗
MAUI Blazor Windows窗口关闭确认提示实现方案
你之前使用的OnClosed事件是窗口已经关闭后才触发的,无法拦截关闭操作。要实现点击标题栏红色关闭按钮时弹出确认提示,需要改用OnClosing事件——它会在窗口关闭前触发,允许你中断默认关闭流程。
修改后的代码示例:
#if WINDOWS using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml; events.AddWindows(wndLifeCycleBuilder => { wndLifeCycleBuilder.OnClosing(async (window, args) => { // 先阻止窗口默认关闭 args.Cancel = true; // 创建系统风格的确认对话框 var dialog = new ContentDialog { Title = "确认关闭", Content = "确定要关闭应用吗?", PrimaryButtonText = "确定", CloseButtonText = "取消", XamlRoot = window.Content.XamlRoot }; // 弹出对话框并获取用户选择 var result = await dialog.ShowAsync(); // 用户确认关闭后,执行关闭操作 if (result == ContentDialogResult.Primary) { args.Cancel = false; window.Close(); } }); wndLifeCycleBuilder.OnWindowCreated(window => { window.CenterOnScreen(400, 750); window.ExtendsContentIntoTitleBar = true; }); }); #endif
关键细节说明:
args.Cancel = true会暂停窗口的默认关闭流程,等待用户确认。- 使用WinUI原生的
ContentDialog,保证对话框样式和Windows系统一致。 - 必须为对话框指定
XamlRoot,否则会抛出运行异常,这里直接复用窗口内容的XamlRoot即可。 - 用户点击「确定」后,需要将
args.Cancel设为false并手动调用window.Close(),完成最终关闭。
内容的提问来源于stack exchange,提问作者Radzioxo
相关产品推荐
相关产品推荐

