Windows 11 22H2中如何移除自定义窗口标题栏的强调色?
解决Windows 11 22H2自定义窗口强调色强制显示问题
问题背景
Windows 11 22H2修改了「设置>个性化>颜色>在标题栏和窗口边框中显示强调色」的运行逻辑,会强制所有窗口标题栏显示强调色,导致自定义窗口无法让标题栏继承Mica效果。尝试以下WindowChrome代码无效,且无法修改TitleBar.Height:
<WindowChrome CaptionHeight="0" GlassFrameThickness="-1" UseAeroCaptionButtons="True" />
可行解决方法
通过Windows API强制覆盖标题栏颜色
用P/Invoke调用DwmSetWindowAttributeAPI,设置DWMWA_CAPTION_COLOR属性为透明或与Mica背景匹配的颜色,直接覆盖系统强制的强调色。示例C#代码:[DllImport("dwmapi.dll")] private static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, ref int attrValue, int attrSize); const int DWMWA_CAPTION_COLOR = 35; protected override void OnSourceInitialized(EventArgs e) { base.OnSourceInitialized(e); var hwnd = new WindowInteropHelper(this).Handle; // 设置标题栏为全透明,使其继承窗口的Mica效果 int transparentColor = 0; // ARGB格式,0代表全透明 DwmSetWindowAttribute(hwnd, DWMWA_CAPTION_COLOR, ref transparentColor, sizeof(int)); }替换为自定义标题栏控件
完全隐藏系统标题栏,自己实现包含窗口控制按钮的自定义标题栏,彻底掌控样式:- 设置窗口
WindowStyle="None",移除系统默认标题栏 - 添加自定义标题栏控件,绑定最小化、最大化、关闭的逻辑
- 给整个窗口(包括自定义标题栏区域)应用Mica效果
- 设置窗口
是否为Windows 11 Bug?
这不是Bug,是微软22H2版本的设计变更。微软调整强调色应用范围是为了保证系统视觉一致性,但未给WPF等自定义窗口场景提供足够适配接口,导致开发者需要通过API或自定义控件绕开。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

