在silverlight中更改tabItem的标题背景

时间:2011-05-06 07:50:06

标签: silverlight silverlight-4.0 tabcontrol

如何在TabItem中更改标题的颜色

tabItem1.Background = new SolidColorBrush(Colors.Red);//This is not changing background
tabItem1.BorderBrush = new SolidColorBrush(Colors.Red);//This change header border color

2 个答案:

答案 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元素。