You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:45:43