更改非活动选项卡 header 字体颜色
Change inactive tab header font color
我正在使用 MahApps.Metro 选项卡控件。我想知道是否可以在选项卡处于非活动状态时更改 header 文本的字体颜色。
目前是这样的:
我可以使用以下方法更改活动选项卡的字体颜色:
<Controls:MetroAnimatedSingleRowTabControl.Resources>
<SolidColorBrush x:Key="AccentColorBrush" Color="Red"/>
</Controls:MetroAnimatedSingleRowTabControl.Resources>
但我无法更改非活动标签的颜色。我想将灰色更改为其他颜色;例如让我们说绿色。有可能改变吗?
MahApps.Metro TabItem
template 使用带有 "GrayNormalBrush"
键的动态资源作为非活动时的字体颜色。因此,您需要做的就是提供您喜欢的 Brush
作为该密钥的资源。根据您要进行的更改范围,您必须选择合适的位置来放置画笔。
换单TabItem
要更改单个 TabItem
上的非活动画笔,请将画笔放入其资源字典中:
<TabItem>
<TabItem.Resource>
<SolidColorBrush x:Key="GrayNormalBrush" Color="Red" />
</TabItem.Resources>
</TabItem>
在单个 TabControl
中更改所有 TabItem
要修改 TabControl
中的所有 TabItem
,您应该覆盖 TabItem
的默认样式,将画笔放入其资源字典中,并将该样式作为 TabControl
的资源:
<TabControl>
<TabControl.Resources>
<!-- It's important to set the BasedOn property so that we
override the style rather than redefine it -->
<Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}">
<Style.Resources>
<SolidColorBrush x:Key="GrayNormalBrush" Color="Red" />
</Style.Resources>
</Style>
</TabControl.Resources>
</TabControl>
您还可以将样式向上移动层次结构以扩大其范围,例如如果将该样式作为 Window
的资源,则 window 中的所有 TabItem
都将被修改。
更改整个应用程序中的所有 TabItem
s
事实证明,这部分比仅将样式放入 App.xaml 资源字典要复杂一些。这里的关键是这种风格应该在 after 被引用 MahApps.Metro 之后定义。就我而言,当我在 App.xaml 中有 MahApps.Metro 词典引用并将该样式放在那里时,第一个 TabItem
根本没有 的样式,而下面的那些都很好,花花公子。
诀窍是在一个单独的文件中创建一个字典,比如说 Resources.xaml,把那个样式放在那里,然后从 App.xaml。请注意,字典的引用顺序对于此解决方案的工作至关重要:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="Resources.xaml" />
...
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
我正在使用 MahApps.Metro 选项卡控件。我想知道是否可以在选项卡处于非活动状态时更改 header 文本的字体颜色。
目前是这样的:
我可以使用以下方法更改活动选项卡的字体颜色:
<Controls:MetroAnimatedSingleRowTabControl.Resources>
<SolidColorBrush x:Key="AccentColorBrush" Color="Red"/>
</Controls:MetroAnimatedSingleRowTabControl.Resources>
但我无法更改非活动标签的颜色。我想将灰色更改为其他颜色;例如让我们说绿色。有可能改变吗?
MahApps.Metro TabItem
template 使用带有 "GrayNormalBrush"
键的动态资源作为非活动时的字体颜色。因此,您需要做的就是提供您喜欢的 Brush
作为该密钥的资源。根据您要进行的更改范围,您必须选择合适的位置来放置画笔。
换单TabItem
要更改单个 TabItem
上的非活动画笔,请将画笔放入其资源字典中:
<TabItem>
<TabItem.Resource>
<SolidColorBrush x:Key="GrayNormalBrush" Color="Red" />
</TabItem.Resources>
</TabItem>
在单个 TabControl
TabItem
要修改 TabControl
中的所有 TabItem
,您应该覆盖 TabItem
的默认样式,将画笔放入其资源字典中,并将该样式作为 TabControl
的资源:
<TabControl>
<TabControl.Resources>
<!-- It's important to set the BasedOn property so that we
override the style rather than redefine it -->
<Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}">
<Style.Resources>
<SolidColorBrush x:Key="GrayNormalBrush" Color="Red" />
</Style.Resources>
</Style>
</TabControl.Resources>
</TabControl>
您还可以将样式向上移动层次结构以扩大其范围,例如如果将该样式作为 Window
的资源,则 window 中的所有 TabItem
都将被修改。
更改整个应用程序中的所有 TabItem
s
事实证明,这部分比仅将样式放入 App.xaml 资源字典要复杂一些。这里的关键是这种风格应该在 after 被引用 MahApps.Metro 之后定义。就我而言,当我在 App.xaml 中有 MahApps.Metro 词典引用并将该样式放在那里时,第一个 TabItem
根本没有 的样式,而下面的那些都很好,花花公子。
诀窍是在一个单独的文件中创建一个字典,比如说 Resources.xaml,把那个样式放在那里,然后从 App.xaml。请注意,字典的引用顺序对于此解决方案的工作至关重要:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="Resources.xaml" />
...
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>