如何在NavigationView中设置文本的前景色?

res*_*p78 1 c# xaml uwp

我正在尝试更改的颜色NavigationView。该文档提供了一个很好的示例,说明如何更改背景,但是我找不到如何更改菜单项的字体颜色。我还能够使用以下命令更改选择指示器的颜色<SolidColorBrush x:Key="SystemControlForegroundAccentBrush" Color="#FFFFFFFF" />

And*_*é B 5

NavigationView是自动使用Reveal高亮显示的众多控件之一,它也是Fluent Design System的新组件之一,其目的是为应用程序增光。

@一种。如果我们要处理的控件的共享状态不如NavigationViewItem那样多,那么Milto解决方案就可以工作,但是NavigationMenuItem具有:

  • PointerOver;
  • 按下
  • 已选择;
  • PointerOverSelected;
  • 按下选择;

不考虑它的禁用状态。只需将前景色属性强制为所需的颜色,即可得到以下内容:

在此处输入图片说明

实现目标的最简单解决方案是覆盖NavigationViewItem模板中的资源,您实际上可以在generic.xaml中检出该资源。您可以这样做,例如:

        <Grid.Resources>
            <SolidColorBrush x:Key="NavigationViewItemForegroundPointerOver" Color="Red"/>
            <SolidColorBrush x:Key="NavigationViewItemForegroundSelected" Color="Red"/>
            <SolidColorBrush x:Key="NavigationViewItemForegroundSelectedPointerOver" Color="Red"/>
            <SolidColorBrush x:Key="NavigationViewItemForegroundPressed" Color="Red"/>
            <SolidColorBrush x:Key="NavigationViewItemForegroundSelectedPressed" Color="Red"/>
        </Grid.Resources>
Run Code Online (Sandbox Code Playgroud)

如果希望将NavigationViewItem内容的初始状态和图标设置为红色,则必须在标记中进行设置。

这是用于填充NavigationView.MenuItems的项目列表。

            <NavigationView.MenuItems>
                <NavigationViewItem Icon="AllApps" FontWeight="Bold" Foreground="Red"  Content="Apps" Tag="apps"/>
                <NavigationViewItem Icon="Video" FontWeight="Bold" Foreground="Red" Content="Games" Tag="games" />
                <NavigationViewItem Icon="Audio" FontWeight="Bold" Content="Music" Tag="music"/>
            </NavigationView.MenuItems>
Run Code Online (Sandbox Code Playgroud)

结果:

在此处输入图片说明

通过此实现,前景边框/背景是分离的,而边框/背景是负责显示功能特征的其他元素。

您可以修改上面提到的资源管理器以实现自己的UI逻辑,比我们现在正在实现的UI逻辑更“美丽”,甚至可以根据应用程序可能提供的自定义主题,使用绑定在运行时更改主题。

编辑: 要为所有NavigationViewMenuItems(包括Settings)设置Foreground属性,请覆盖以下资源:

<SolidColorBrush x:Key="NavigationViewItemForeground" Color="Red"/>
Run Code Online (Sandbox Code Playgroud)

这样,您无需为所有项目显式设置前景。使用NavigationView的SettingsItem属性,我仅设法更改了图标颜色。

  • 我想补充一点,如果您将导航视图的布局更改为在顶部,则需要在每个词之前添加一个“顶部”词前缀,例如:“TopNavigationViewItemForegroundPointerOver” (2认同)