我正在尝试更改NavigationView
的颜色。 documentation给出了如何更改背景的一个很好的示例,但我找不到如何更改菜单项的字体颜色。
我还能够使用<SolidColorBrush x:Key="SystemControlForegroundAccentBrush" Color="#FFFFFFFF" />
答案 0 :(得分:4)
NavigationView是自动使用 Reveal highlight 的众多控件之一,它也是新的Fluent Design System组件之一,其目标是为应用程序添加光。
@A。如果我们处理的控件没有NavigationViewItem那么多的状态,那么Milto解决方案就可以工作,但是NavigationMenuItem有:
没有考虑到它的禁用状态。 只需将前景属性强制为所需的颜色,将提供以下内容:
实现您的意图的最简单的解决方案是覆盖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>
如果您想要将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>
结果:
通过此实现, Foreground 与 Border / Background 分开,这是负责表征Reveal功能的其他元素。
您可以修改上面提到的资源器来实现您自己的UI逻辑,比我们现在实现的更加“漂亮”,甚至使用绑定来改变运行时的主题,具体取决于您应用的自定义主题报价。
修改强> 要为所有NavigationViewMenuItems设置Foreground属性(包括设置),请覆盖以下资源:
<SolidColorBrush x:Key="NavigationViewItemForeground" Color="Red"/>
使用此功能,您无需为所有项目明确设置前景。使用NavigationView的SettingsItem
属性,我只设法更改图标颜色。
答案 1 :(得分:0)
像这样:
<NavigationView ...>
...
<NavigationView.MenuItemContainerStyle>
<Style TargetType="NavigationViewItem">
<Setter Property="Foreground" Value="Red"/>
</Style>
</NavigationView.MenuItemContainerStyle>
...
</NavigationView>