如何更改 MahApps TabItem 的文本颜色
How to change text color of a MahApps TabItem
我在 WPF 应用程序中使用 MahApps,并且有几个 TabControl
s。
我找到了如何更改字体大小:
<TabControl.Resources>
<Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}">
<Setter Property="controls:HeaderedControlHelper.HeaderFontSize" Value="12" />
</Style>
</TabControl.Resources>
我也想修改文字颜色,但是不知道怎么办。
有人能帮帮我吗?
不幸的是,HeaderedControlHelper
和TabControlHelper
都不能用来设置header画笔,因为它们在[默认样式的控件模板中是hard-codedTabItem
.
为了更改 header 画笔,您必须复制 default style for TabItem
from GitHub 并调整 Foreground
画笔,这决定了您需要的所有控件状态中的文本颜色。设置前景笔刷的部分有五个。
默认前景,如果没有被任何其他状态覆盖。
<Setter Property="Foreground" Value="{DynamicResource MahApps.Brushes.Text}" />
选项卡选中状态下的前景画笔。
<Trigger Property="IsSelected" Value="true">
<Setter TargetName="ContentSite" Property="TextElement.Foreground" Value="{DynamicResource MahApps.Brushes.Accent}" />
<Setter TargetName="Underline" Property="BorderBrush" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(mah:TabControlHelper.UnderlineSelectedBrush), Mode=OneWay}" />
</Trigger>
未选中选项卡时的前景刷。
<Trigger Property="IsSelected" Value="false">
<Setter TargetName="ContentSite" Property="TextElement.Foreground" Value="{DynamicResource MahApps.Brushes.Gray}" />
</Trigger>
当鼠标悬停在选项卡上时前景刷header。
<Trigger SourceName="Border" Property="IsMouseOver" Value="True">
<Setter TargetName="ContentSite" Property="TextElement.Foreground" Value="{DynamicResource MahApps.Brushes.Gray.MouseOver}" />
<Setter TargetName="Underline" Property="BorderBrush" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(mah:TabControlHelper.UnderlineMouseOverBrush), Mode=OneWay}" />
</Trigger>
当鼠标悬停在选项卡上时前景画笔 header 但未选中。
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition SourceName="Border" Property="IsMouseOver" Value="True" />
<Condition Property="IsSelected" Value="True" />
</MultiTrigger.Conditions>
<Setter TargetName="ContentSite" Property="TextElement.Foreground" Value="{DynamicResource MahApps.Brushes.Highlight}" />
<Setter TargetName="Underline" Property="BorderBrush" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(mah:TabControlHelper.UnderlineMouseOverSelectedBrush), Mode=OneWay}" />
</MultiTrigger>
将您改编的样式移动到资源字典并通过键显式引用样式或删除 x:Key
使其隐式,以便自动应用于范围内的所有选项卡项。
我在 WPF 应用程序中使用 MahApps,并且有几个 TabControl
s。
我找到了如何更改字体大小:
<TabControl.Resources>
<Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}">
<Setter Property="controls:HeaderedControlHelper.HeaderFontSize" Value="12" />
</Style>
</TabControl.Resources>
我也想修改文字颜色,但是不知道怎么办。
有人能帮帮我吗?
不幸的是,HeaderedControlHelper
和TabControlHelper
都不能用来设置header画笔,因为它们在[默认样式的控件模板中是hard-codedTabItem
.
为了更改 header 画笔,您必须复制 default style for TabItem
from GitHub 并调整 Foreground
画笔,这决定了您需要的所有控件状态中的文本颜色。设置前景笔刷的部分有五个。
默认前景,如果没有被任何其他状态覆盖。
<Setter Property="Foreground" Value="{DynamicResource MahApps.Brushes.Text}" />
选项卡选中状态下的前景画笔。
<Trigger Property="IsSelected" Value="true"> <Setter TargetName="ContentSite" Property="TextElement.Foreground" Value="{DynamicResource MahApps.Brushes.Accent}" /> <Setter TargetName="Underline" Property="BorderBrush" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(mah:TabControlHelper.UnderlineSelectedBrush), Mode=OneWay}" /> </Trigger>
未选中选项卡时的前景刷。
<Trigger Property="IsSelected" Value="false"> <Setter TargetName="ContentSite" Property="TextElement.Foreground" Value="{DynamicResource MahApps.Brushes.Gray}" /> </Trigger>
当鼠标悬停在选项卡上时前景刷header。
<Trigger SourceName="Border" Property="IsMouseOver" Value="True"> <Setter TargetName="ContentSite" Property="TextElement.Foreground" Value="{DynamicResource MahApps.Brushes.Gray.MouseOver}" /> <Setter TargetName="Underline" Property="BorderBrush" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(mah:TabControlHelper.UnderlineMouseOverBrush), Mode=OneWay}" /> </Trigger>
当鼠标悬停在选项卡上时前景画笔 header 但未选中。
<MultiTrigger> <MultiTrigger.Conditions> <Condition SourceName="Border" Property="IsMouseOver" Value="True" /> <Condition Property="IsSelected" Value="True" /> </MultiTrigger.Conditions> <Setter TargetName="ContentSite" Property="TextElement.Foreground" Value="{DynamicResource MahApps.Brushes.Highlight}" /> <Setter TargetName="Underline" Property="BorderBrush" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(mah:TabControlHelper.UnderlineMouseOverSelectedBrush), Mode=OneWay}" /> </MultiTrigger>
将您改编的样式移动到资源字典并通过键显式引用样式或删除 x:Key
使其隐式,以便自动应用于范围内的所有选项卡项。