禁用选项卡Item selected wpf上的边框和背景更改

禁用选项卡Item selected wpf上的边框和背景更改,wpf,xaml,styles,tabcontrol,tabitem,Wpf,Xaml,Styles,Tabcontrol,Tabitem,在我的WPF文档中,我有以下内容: <Window.Resources> <Style x:Key="SidebarTab" TargetType="TabItem"> <Setter Property="Foreground" Value="#303030"></Setter> <Setter Property="BorderBrush" Value="Transparent"></

在我的WPF文档中,我有以下内容:

<Window.Resources>
    <Style x:Key="SidebarTab" TargetType="TabItem">

        <Setter Property="Foreground"  Value="#303030"></Setter>
        <Setter Property="BorderBrush"  Value="Transparent"></Setter>
        <Setter Property="BorderThickness"  Value="0"></Setter>
        <Setter Property="Background"  Value="#151515"></Setter>

        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Foreground" Value="{StaticResource PrimaryHueMidBrush}"></Setter>
                <Setter Property="BorderBrush"  Value="Transparent"></Setter>
                <Setter Property="BorderThickness"  Value="0"></Setter>
                <Setter Property="Background"  Value="#151515"></Setter>
            </Trigger>
        </Style.Triggers>

    </Style>
</Window.Resources>

<Border Background="#151515" CornerRadius="20">
    <Grid Margin="23,47,0,0">
        <TabControl TabStripPlacement="Left" Style="{DynamicResource SidebarTabControl}">
            <TabItem Style="{DynamicResource SidebarTab}">
                <TabItem.Header>
                    <materialDesign:PackIcon Kind="EmoticonLol" VerticalAlignment="Center" HorizontalAlignment="Left"/>
                </TabItem.Header>
            </TabItem>
            <TabItem Style="{DynamicResource SidebarTab}">
                <TabItem.Header>
                    <materialDesign:PackIcon Kind="EmoticonLol" VerticalAlignment="Center" HorizontalAlignment="Left"/>
                </TabItem.Header>
            </TabItem>
            <TabItem Style="{DynamicResource SidebarTab}">
                <TabItem.Header>
                    <materialDesign:PackIcon Kind="EmoticonLol" VerticalAlignment="Center" HorizontalAlignment="Left"/>
                </TabItem.Header>
            </TabItem>
            <TabItem Style="{DynamicResource SidebarTab}">
                <TabItem.Header>
                    <materialDesign:PackIcon Kind="EmoticonLol" VerticalAlignment="Center" HorizontalAlignment="Left"/>
                </TabItem.Header>
            </TabItem>
            <TabItem Style="{DynamicResource SidebarTab}">
                <TabItem.Header>
                    <materialDesign:PackIcon Kind="EmoticonLol" VerticalAlignment="Center" HorizontalAlignment="Left"/>
                </TabItem.Header>
            </TabItem>
        </TabControl>
    </Grid>
</Border>

但它仍然不起作用。有人对如何做到这一点有什么建议吗?

我尝试了你的风格,我也能得到边界。这样做的原因实际上是TabItem的默认模板具有边框颜色和厚度,当您定义颜色时,您的属性仍然无法应用于这些边框颜色和厚度

因此,您需要做的实际上是重新定义选项卡项的控件模板

我通过覆盖TabItem的Template属性做了一些基本的修改,添加了一些东西,并绑定了BorderThickness、BorderBrush和Background

<Style x:Key="SidebarTab" TargetType="TabItem">

        <Setter Property="Foreground"  Value="#303030"></Setter>
        <Setter Property="BorderBrush"  Value="Red"></Setter>
        <Setter Property="BorderThickness"  Value="1"></Setter>
        <Setter Property="Background"  Value="White"></Setter>

        <!--I have added this START-->
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TabItem">
                    <Border BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}"
                            Background="{TemplateBinding Background}">
                        <ContentPresenter ContentSource="Header" />
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
       <!--I have added this END-->

        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Foreground" Value="Blue"></Setter>
                <Setter Property="BorderBrush"  Value="Transparent"></Setter>
                <Setter Property="BorderThickness"  Value="0"></Setter>
                <Setter Property="Background"  Value="Yellow"></Setter>
            </Trigger>
        </Style.Triggers>

    </Style>

注意:-出于测试目的,我更改了上述代码中前台、背景、边框厚度的属性值,因为我找不到静态资源。你必须换回钥匙


我希望我已经表明了一点,让你们继续前进。试一试,如果你发现任何问题,请告诉我。

我尝试了你的风格,我也能够获得边界。这样做的原因实际上是TabItem的默认模板具有边框颜色和厚度,当您定义颜色时,您的属性仍然无法应用于这些边框颜色和厚度

因此,您需要做的实际上是重新定义选项卡项的控件模板

我通过覆盖TabItem的Template属性做了一些基本的修改,添加了一些东西,并绑定了BorderThickness、BorderBrush和Background

<Style x:Key="SidebarTab" TargetType="TabItem">

        <Setter Property="Foreground"  Value="#303030"></Setter>
        <Setter Property="BorderBrush"  Value="Red"></Setter>
        <Setter Property="BorderThickness"  Value="1"></Setter>
        <Setter Property="Background"  Value="White"></Setter>

        <!--I have added this START-->
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TabItem">
                    <Border BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}"
                            Background="{TemplateBinding Background}">
                        <ContentPresenter ContentSource="Header" />
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
       <!--I have added this END-->

        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Foreground" Value="Blue"></Setter>
                <Setter Property="BorderBrush"  Value="Transparent"></Setter>
                <Setter Property="BorderThickness"  Value="0"></Setter>
                <Setter Property="Background"  Value="Yellow"></Setter>
            </Trigger>
        </Style.Triggers>

    </Style>

注意:-出于测试目的,我更改了上述代码中前台、背景、边框厚度的属性值,因为我找不到静态资源。你必须换回钥匙


我希望我已经表明了一点,让你们继续前进。试一试,如果发现任何问题,请告诉我。

如果我很了解有一个属性“模板”具有定义的默认样式,我在哪里可以找到此样式?如果可能的话,你能提供一个链接吗?我一直在寻找,但这似乎是一种风格的重新定义。是的,你是对的。每个控件都定义自己的默认模板。如果您想查看任何给定控件的默认模板,可以单击此链接。希望我已经回答了你的问题。如果我理解得很好,有一个定义了默认样式的属性“模板”,我在哪里可以找到这个样式?如果可能的话,你能提供一个链接吗?我一直在寻找,但这似乎是一种风格的重新定义。是的,你是对的。每个控件都定义自己的默认模板。如果您想查看任何给定控件的默认模板,可以单击此链接。希望我已经回答了你的问题。