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

UWP WinUI 2.7环境下NavigationView导致标题栏与页面背景色差问题问询

问题原因

你遇到的色差本质是两层半透明亚克力(Acrylic)材质叠加导致的颜色加深,加上WinUI 2.7的NavigationView默认开启了标题栏自动适配逻辑,会额外渲染一层顶部背景填充,最终出现色差。


解决方案

  • 第一步:删除外层Grid的Background属性设置,或者直接改为Transparent,避免两层亚克力叠加变色。修改后的XAML结构如下:
<Grid ColumnSpacing="10.0">
    <muxc:NavigationView
        x:Name="NavigationView"
        HorizontalContentAlignment="Left"
        IsBackButtonVisible="Collapsed"
        PaneDisplayMode="LeftMinimal"
        SelectionChanged="SelectionChanged"
        <!-- 新增两个配置项 -->
        IsTitleBarAutoPaddingEnabled="False"
        Background="{ThemeResource AcrylicBackgroundFillColorDefaultBrush}">
        <muxc:NavigationView.MenuItems>
            <muxc:NavigationViewItem
                Content="Main Page"
                Icon="Home"
                Tag="MainPage" />
        </muxc:NavigationView.MenuItems>
        <Frame x:Name="MainFrame" Margin="0,0,0,0" />
    </muxc:NavigationView>
</Grid>
  • 第二步:在后台代码中动态设置内容区的顶部边距,避免页面内容被标题栏按钮遮挡,修改构造函数逻辑如下:
public MainPage()
{
    this.InitializeComponent();

    var coreTitleBar = CoreApplication.GetCurrentView().TitleBar; 
    coreTitleBar.ExtendViewIntoTitleBar = true;

    var view = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView(); 
    view.TitleBar.ButtonBackgroundColor = Windows.UI.Colors.Transparent;
    view.TitleBar.ButtonInactiveBackgroundColor = Windows.UI.Colors.Transparent;

    // 新增:动态适配标题栏高度,设置内容区顶部边距
    MainFrame.Margin = new Thickness(0, coreTitleBar.Height, 0, 0);
    coreTitleBar.LayoutMetricsChanged += (s, e) =>
    {
        MainFrame.Margin = new Thickness(0, coreTitleBar.Height, 0, 0);
    };
}
  • 兼容说明:如果你使用的WinUI 2.x版本低于2.4,没有IsTitleBarAutoPaddingEnabled属性,可以右键NavigationView选择「编辑模板」->「编辑副本」,在默认模板中找到名为TitleBar的Border控件,将它的Background属性设置为Transparent即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:36:01