设置窗口标题栏颜色

📅 发布时间:2026/7/9 18:59:36 👁️ 浏览次数:
设置窗口标题栏颜色
/// summary/// 统一设置窗口标题栏颜色/// /summary/// param namewindow目标窗口(this)/param/// param namebgColor标题栏背景色Win32 格式使用/param/// param nametextColor标题文字颜色Win32 格式使用/param/// param namecontentBg内容区背景色WPF 属性使用/paraminternal static void ApplyTitleBarTheme(this Window window, Color bgColor, Color textColor, Brush contentBg){try{// 1. 设置内容区背景 (即原本的 Win.Background)window.Background contentBg;// 2. 设置 Win32 标题栏背景IntPtr hWnd new WindowInteropHelper(window).EnsureHandle();// 转换颜色格式: 0x00BBGGRR// 3. 设置标题栏背景色int win32BgColor (bgColor.B 16) | (bgColor.G 8) | bgColor.R;_ DwmSetWindowAttribute(hWnd, DwmCaptionColor, ref win32BgColor, sizeof(int));// 4. 设置标题文字颜色int win32TextColor (textColor.B 16) | (textColor.G 8) | textColor.R;_ DwmSetWindowAttribute(hWnd, DwmTextColor, ref win32TextColor, sizeof(int));/*// 5. 强制开启沉浸式深色模式适配 Win11 视觉int darkMode 1;_ DwmSetWindowAttribute(hWnd, 20, ref darkMode, sizeof(int));*/}catch (Exception ex){// 打印错误或忽略旧版本 Windows 不支持此 API 会报错Debug.WriteLine($设置标题栏颜色失败: {ex.Message});}}