更改非活动标签标题字体颜色

时间:2017-05-31 20:47:58

标签: c# wpf visual-studio tabcontrol mahapps.metro

我正在使用MahApps.Metro标签控件。我想知道当标签处于非活动状态时是否可以更改标题文本的字体颜色。

目前它是这样的: enter image description here

我可以使用以下方法更改活动标签字体颜色:

        <Controls:MetroAnimatedSingleRowTabControl.Resources>
            <SolidColorBrush x:Key="AccentColorBrush" Color="Red"/>
        </Controls:MetroAnimatedSingleRowTabControl.Resources>

enter image description here

但我无法更改非活动标签的颜色。我想把灰色改成其他颜色;比如让我们说绿色。是否有可能改变它?

1 个答案:

答案 0 :(得分:1)

MahApps.Metro TabItem template使用带有"GrayNormalBrush"密钥的动态资源作为其处于非活动状态时的字体颜色。因此,您需要做的就是使用该密钥提供您喜欢的Brush作为资源。根据您想要改变的范围,您必须选择一个合适的位置放置刷子。

更改单个TabItem

要在单个TabItem上更改非活动画笔,请将画笔放在其资源字典中:

<TabItem>
    <TabItem.Resource>
        <SolidColorBrush x:Key="GrayNormalBrush" Color="Red" />
    </TabItem.Resources>
</TabItem>

更改单个TabItem 中的所有TabControl

要修改TabItem中的所有TabControl,您应该覆盖TabItem的默认样式,将画笔放在其资源字典中,并将该样式设为{{1}资源:

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都将被修改。

更改整个应用程序中的所有TabItem

这部分被证明比将该样式放在 App.xaml 资源字典中要有点棘手。关键是这个样式应该在 MahApps.Metro 之后定义。在我的情况下,当我在 App.xaml 中有 MahApps.Metro 词典引用并且还将该样式放在那里时,第一个TabItem没有样式在所有,而以下的那些是好的和花花公子。

诀窍是在一个单独的文件中创建一个字典,比如 Resources.xaml ,将那个样式放在那里,并从 App.xaml 引用该字典。请注意,引用字典的顺序对于此解决方案的工作至关重要:

TabItem