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

MAUI WinUI3 Windows应用默认标题栏不随文本大小调整问题

问题

我正在开发Windows平台的MAUI应用,需要设置UI元素的顶部内边距以避免与标题栏重叠,为此编写了如下计算标题栏高度的函数:

[DllImport("uxtheme.dll", CharSet = CharSet.Auto)]
public static extern int GetThemeSysSize(IntPtr hTheme, int iSizeId);
public const int SM_CXFIXEDFRAME = 7;
public const int SM_CYCAPTION = 4;

public int TitleBarHeight(){
    IntPtr hTheme = IntPtr.Zero; // 使用Windows默认主题
    int titleBarHeight = GetThemeSysSize(hTheme, SM_CYCAPTION);
    int titleBarBorderSize = GetThemeSysSize(hTheme, SM_CXFIXEDFRAME);
    return requiredTitleBarPadding = titleBarHeight + titleBarBorderSize;
}

该函数在100%文本大小下返回32,225%文本大小设置下返回51,符合其他默认窗口的标题栏高度表现。100%文本大小时,测试MAUI应用与GitBash窗口的标题栏高度一致;但设置为225%时,GitBash标题栏正常调整,MAUI应用的标题栏高度却无变化。

请问这是设置问题,还是MAUI/WinUI3默认不支持该适配?是否必须为Windows版本应用创建自定义标题栏才能解决此问题?我未找到禁用默认行为的相关设置。

解答
  • 这不是设置问题,MAUI基于的WinUI3默认标题栏本身不支持自动适配系统文本缩放比例。WinUI3默认标题栏高度为固定值,不会随系统文本缩放动态调整,这和GitBash这类传统Win32应用的行为存在差异。
  • 目前解决该问题必须创建自定义标题栏。通过自定义标题栏,你可以完全掌控标题栏的尺寸与样式,还能根据TitleBarHeight()计算出的数值动态调整高度,同步适配UI元素的顶部内边距。
  • 无需禁用默认行为,直接替换即可:在Windows平台MAUI项目中,通过AppWindow.TitleBar获取默认标题栏实例,设置ExtendsContentIntoTitleBar = true,之后自定义标题栏布局控件,将其高度设为计算出的数值,最后把顶部UI元素的内边距绑定到该高度值即可。

内容的提问来源于stack exchange,提问作者AronK

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 07:48:38