如何在TabItem中更改标题的颜色
tabItem1.Background = new SolidColorBrush(Colors.Red);//This is not changing background
tabItem1.BorderBrush = new SolidColorBrush(Colors.Red);//This change header border color
答案 0 :(得分:1)
在选项卡控件上使用HeaderTemplates,然后在后面的代码中更改它们,例如:
<DataTemplate x:Key="InvalidTabHeader">
<Border BorderBrush="Red" BorderThickness="1">
<StackPanel Orientation="Horizontal" VerticalAlignment="Top" HorizontalAlignment="Left">
<TextBlock Text="{Binding}"></TextBlock>
</StackPanel>
</Border>
</DataTemplate>
<DataTemplate x:Key="ValidTabHeader">
<StackPanel Orientation="Horizontal" VerticalAlignment="Top" HorizontalAlignment="Left">
<TextBlock Text="{Binding}"></TextBlock>
</StackPanel>
</DataTemplate>
然后在标签项XAML ...
中<sdk:TabItem Header="My Tab" x:Name="MyTab" HeaderTemplate="{StaticResource ValidTabHeader}">
然后您可以在后面的视图代码中执行此类操作:
var invalidTabStyle = Resources [INVALID_TABITEM_HEADER_TEMPLATE]为DataTemplate;
var validTabStyle = Resources [VALID_TABITEM_HEADER_TEMPLATE] as DataTemplate;
myTabItem.HeaderTemplate = errorCnt == 0? validTabStyle:invalidTabStyle;
答案 1 :(得分:0)
不幸的是,很常见的是,即使是一些相当简单的功能也需要您自己模拟现有控件(或者在Myles建议中,您只需使用自己的UI覆盖默认UI)。
在这种情况下的问题是现有的TabItem模板假定所选选项卡将具有白色(#FFFFFFFF)背景,其硬编码到模板中(这在许多默认模板中很常见)。
您应该注意,您的背景值会影响未选中的标签,但不是因为粉色渐变而显示为Red
。
我的建议是咬住子弹并复制TabItem的默认模板,然后根据需要进行操作。这种方法为您提供了更大的灵活性,而无需添加额外的不必要的UI元素。