【问题标题】:NavigationView Pane backgroundNavigationView 窗格背景
【发布时间】:2026-01-24 03:20:05
【问题描述】:

如何更改 NavigationView 窗格背景?

我正在尝试这种方式:

<NavigationView.Background>
   <LinearGradientBrush EndPoint="0.5,0" StartPoint="0.5,1">
      <GradientStop Color="#b1c899" Offset="0"/>
      <GradientStop Color="#18c1b9" Offset="1"/>
   </LinearGradientBrush>
</NavigationView.Background>

但它似乎有我无法删除的“acrylic”,以及更改Header的背景颜色。

【问题讨论】:

    标签: windows uwp navigationview pane


    【解决方案1】:

    自定义 UI 的一个可能选项是覆盖以下两个主题资源:NavigationViewDefaultPaneBackgroundNavigationViewExpandedPaneBackground

    您通常会修改这两个资源以自定义 Acrylic Brush 的外观,方法是通过以下方式覆盖它们:

    <AcrylicBrush x:Key="NavigationViewDefaultPaneBackground"
                  BackgroundSource="Backdrop" TintColor="Blue" TintOpacity=".6"/>
    

    我认为可以简单地定义 aSolidColorBrush 而不是 AcrylicBrush,因此将亚克力背景更改为纯色,并从 NavigationView 窗格中完全移除亚克力。 p>

    <SolidColorBrush x:Key="NavigationViewExpandedPaneBackground" Color="Red"/>
    <SolidColorBrush x:Key="NavigationViewDefaultPaneBackground" Color="Red" />
    

    【讨论】:

    • 您可以在 App.xaml 页面中定义。但是您也可以在您正在实例化 NavigationView 的页面中定义它。例如,假设您定义了一个 Grid,它是 NavigationView 对象的布局容器。只需执行 ... 并在其中定义 SolidColorBrush 资源。
    • 这很完美!我唯一需要改变的是 Background="Red"Color="Red"!!
    • @RobertoPinheiro 很高兴我能帮上忙!是的,这是我的一个巨大错误,我将编辑帖子!
    • 我一直在寻找如何完成同样的事情,但在 WinUI 版本中使用顶部窗格。为此,您可以使用密钥NavigationViewTopPaneBackground。见github.com/Microsoft/microsoft-ui-xaml/blob/master/dev/…
    • @Nathan Castle 我发现这些画笔无法设置为透明。其他颜色也可以。
    【解决方案2】:

    我想在 Andre 的回答中补充一点,也可以更改 Top Pane 背景属性:

    <NavigationView.Resources>
        <SolidColorBrush x:Key="NavigationViewTopPaneBackground" Color="Red" />
    </NavigationView.Resources>
    

    正如 Nathan 在 cmets 中已经指出的,还有更多颜色可定制。你可以在这里查看它们:

    https://github.com/Microsoft/microsoft-ui-xaml/blob/master/dev/NavigationView/NavigationView_rs2_themeresources.xaml

    【讨论】: