选择时的 C# 选项卡背景

C# tab background when selected

我想在我的 WPF 应用程序中更改我的选项卡的背景图像,这是我目前这样做的代码:

<Window.Resources>
    <ResourceDictionary>
        <Style TargetType="{x:Type TabItem}">
            <Setter Property="BorderThickness"  Value="0" />
            <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="0,0,0,0"  Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}"  BorderThickness="0,0,0,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 Property="Background">
                                    <Setter.Value>
                                        <ImageBrush ImageSource="arrowOR.png" />
                                    </Setter.Value>
                                </Setter>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ResourceDictionary>
</Window.Resources>

标签本身的背景我已经设置了 ImageBrush ImageSource="arrowBU.png"。现在由于某种原因,无论标签是否被选中,背景总是 arrowBU.png.

编辑:我还需要在悬停选项卡时设置此 arrowOR.png,对于悬停时光标是手而不是箭头也是如此。 我还将我的选项卡设置为禁用,我希望我的用户使用按钮遵循标准流程。

有人可以帮忙吗?

问题是 Background 的局部属性值(带 arrowBU.png 的图像刷)优先。摆脱它并在问题中包含的 TabItem 默认样式中设置 TabItem 的默认背景:

<Style TargetType="{x:Type TabItem}">
    <Setter Property="BorderThickness"  Value="0" />
    <Setter Property="VerticalContentAlignment" Value="Center" />
    <Setter Property="HorizontalContentAlignment" Value="Center" />
    <Setter Property="Background">
        <Setter.Value>
            <ImageBrush ImageSource="arrowBU.png" />
        </Setter.Value>
    </Setter>
    <Setter Property="Template">
        <!-- blah blah blah -->

如果您只想在某些 选项卡项上设置背景,请为基于 上面的项定义特殊样式风格。 将背景图像画笔移动setter到新的派生样式中。然后在要使用它的选项卡项上显式设置此样式。

<Style TargetType="TabItem" x:Key="BUBkgTabItem" BasedOn="{StaticResource {x:Type TabItem}}">
    <Setter Property="Background">
        <Setter.Value>
            <ImageBrush ImageSource="arrowBU.png" />
        </Setter.Value>
    </Setter>
</Style>

你会像这样使用它:

<TabControl>
    <!-- Without BU background -->
    <TabItem Header="Blah">
        <!-- stuff -->
    </TabItem>

    <!-- With BU background -->
    <TabItem Header="Planxty" Style="{StaticResource BUBkgTabItem}">
        <!-- stuff -->
    </TabItem>