Изменить цвет подсветки по умолчанию для TabItem в TabControl WPF - PullRequest
0 голосов
/ 08 октября 2010

Я пытаюсь изменить цвет подсветки по умолчанию для элемента вкладки в элементе управления вкладками в WPF.

На изображении цвет подсветки оранжевый, я просто хочу знать, есть ли возможность изменить его надругой сплошной цвет?

alt text

Вот мой XAML, который объявляет TabControl и 2 TabItems

<TabControl>
            <TabControl.Background>
                <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                    <GradientStop Color="#FFCCCCD0"/>
                    <GradientStop Color="#FF526593" Offset="1"/>
                </LinearGradientBrush>
            </TabControl.Background>
            <TabItem Header="test1">
                <TabItem.Content>
                    <StackPanel Orientation="Horizontal">
                        <Button Content="Test" VerticalAlignment="Center" />
                        <Button Content="Test2" />
                    </StackPanel>
                </TabItem.Content>              
            </TabItem>
            <TabItem Header="Test2">
                <TabItem.Content>
                    <TextBox />
                </TabItem.Content>
            </TabItem>
        </TabControl>

Также обратите внимание, что у меня нет доступа к смеси выраженийпоэтому любые решения должны быть возможны в Visual Studio 2010.

Спасибо.

1 Ответ

4 голосов
/ 08 октября 2010

Вам необходимо переопределить стиль элемента управления TabItem. Ниже приведен пример, который все еще нуждается в доработке. Просто измените его на стиль, который вы хотите. Триггер IsSelected добавляет изменения в TabItem, когда он выбран.

<Window.Resources>
    <ResourceDictionary>
        <Style TargetType="{x:Type TabItem}">
            <Setter Property="BorderThickness"
                    Value="3" />
            <Setter Property="BorderBrush"
                    Value="Blue" />
            <Setter Property="VerticalContentAlignment"
                    Value="Center" />
            <Setter Property="HorizontalContentAlignment"
                    Value="Center" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TabItem}">
                        <Border>
                            <Grid>
                                <Grid>
                                    <Border x:Name="border" 
                                            CornerRadius="3,3,0,0"
                                            Background="{TemplateBinding Background}"
                                            BorderBrush="{TemplateBinding BorderBrush}"
                                            BorderThickness="1,1,1,0" />
                                </Grid>
                                <Border BorderThickness="{TemplateBinding BorderThickness}"
                                        Padding="{TemplateBinding Padding}">
                                    <ContentPresenter ContentSource="Header"
                                                      HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                                      VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
                                </Border>
                            </Grid>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected"
                                     Value="True">
                                <Setter TargetName="border"
                                        Property="BorderBrush"
                                        Value="Red" />
                                <Setter TargetName="border"
                                        Property="BorderThickness"
                                        Value="0,3,0,0" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ResourceDictionary>
</Window.Resources>

<Grid>
    <TabControl>
        <TabControl.Background>
            <LinearGradientBrush EndPoint="0,1"
                                 StartPoint="0,0">
                <GradientStop Color="#FFCCCCD0" />
                <GradientStop Color="#FF526593"
                              Offset="1" />
            </LinearGradientBrush>
        </TabControl.Background>
        <TabItem Header="test1">
            <TabItem.Content>
                <StackPanel Orientation="Horizontal">
                    <Button Content="Test"
                            VerticalAlignment="Center" />
                    <Button Content="Test2" />
                </StackPanel>
            </TabItem.Content>
        </TabItem>
        <TabItem Header="Test2">
            <TabItem.Content>
                <TextBox />
            </TabItem.Content>
        </TabItem>
    </TabControl>
</Grid>
...