Вопрос по c#, wpf – Как изменить цвет фона TabControl.Header

17

Мне нужно изменить цвет фона заголовка TabControl, но TabControl не имеет свойства для него, как я могу это сделать. Помоги мне, пожалуйста. Вот мой код:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="502" Width="628">
    <TabControl Background="#123" TabStripPlacement="Left" HorizontalAlignment="Stretch" BorderBrush="#41020202">
        <TabControl.BitmapEffect>
            <DropShadowBitmapEffect Color="Black" Direction="270"/>
        </TabControl.BitmapEffect>
        <TabControl.Resources>
            <Style TargetType="{x:Type TabItem}">
                <Setter Property="BorderThickness" Value="0"/>
                <Setter Property="Padding" Value="0" />
                <Setter Property="HeaderTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <Border x:Name="grid" Background="Red">
                                <ContentPresenter>
                                    <ContentPresenter.Content>
                                        <TextBlock Margin="4" FontSize="15" Text="{TemplateBinding Content}"/>
                                    </ContentPresenter.Content>
                                    <ContentPresenter.LayoutTransform>
                                        <RotateTransform Angle="270" />
                                    </ContentPresenter.LayoutTransform>
                                </ContentPresenter>
                            </Border>
                            <DataTemplate.Triggers>
                                <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type TabItem}},Path=IsSelected}" Value="True">
                                    <Setter TargetName="grid" Property="Background" Value="Green"/>
                                </DataTrigger>
                            </DataTemplate.Triggers>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </TabControl.Resources>
        <TabItem Header="Tab Item 1" />
        <TabItem Header="Tab Item 2" />
        <TabItem Header="Tab Item 3" />
        <TabItem Header="Tab Item 4" />
    </TabControl>
</Window>

Вот мой результат: My result

Вот результат, который мне нужен: Here is result that I need

Я помню, как застрял в этом вопросе, если я правильно помню, у меня дома есть проект, в котором я решил, я посмотрю его, если к тому времени вы его еще не нашли. Terry
Я перепробывал все стили: TabControl.ItemContainerStyle, TabControl.ItemsPanel, TabControl.Style, но пока не один не помог, подскажите, пожалуйста, какой стиль нужно изменить хотя бы Creative
Ищите это, пожалуйста. Это действительно нужно мне. Creative
Вы всегда можете изменить шаблон элемента управления, скопировав его и внеся локальные изменения. Это громоздко, но и то, что делает WPF таким гибким. Martin Liversage

Ваш Ответ

3   ответа
30

ь то, что вы хотите.

<Style TargetType="{x:Type TabPanel}">
    <Setter Property="Background" Value="Black"></Setter>
</Style>
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Creative
Error: User Rate Limit Exceeded
2

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

4

Вы должны установить стиль для TabPanel ... В основном мы размещаем вкладки в TabPanel в TabControl.

Код ниже поможет вам ..

<TabControl Background="#123" TabStripPlacement="Left" HorizontalAlignment="Stretch" BorderBrush="#41020202">
            <TabControl.BitmapEffect>
                <DropShadowBitmapEffect Color="Black" Direction="270"/>
            </TabControl.BitmapEffect>
            <TabControl.Resources>
                <Style TargetType="{x:Type TabPanel}">
                    <Setter Property="Background" Value="Yellow"/>
                </Style>
                <Style TargetType="{x:Type TabItem}">
                    <Setter Property="BorderThickness" Value="0"/>
                    <Setter Property="Padding" Value="0" />
                    <Setter Property="HeaderTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <Border x:Name="grid" Background="Red">
                                    <ContentPresenter>
                                        <ContentPresenter.Content>
                                            <TextBlock Margin="4" FontSize="15" Text="{TemplateBinding Content}"/>
                                        </ContentPresenter.Content>
                                        <ContentPresenter.LayoutTransform>
                                            <RotateTransform Angle="270" />
                                        </ContentPresenter.LayoutTransform>
                                    </ContentPresenter>
                                </Border>
                                <DataTemplate.Triggers>
                                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type TabItem}},Path=IsSelected}" Value="True">
                                        <Setter TargetName="grid" Property="Background" Value="Green"/>
                                    </DataTrigger>
                                </DataTemplate.Triggers>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </TabControl.Resources>
            <TabItem Header="Tab Item 1" />
            <TabItem Header="Tab Item 2" />
            <TabItem Header="Tab Item 3" />
            <TabItem Header="Tab Item 4" />
        </TabControl>

Похожие вопросы