禁用选项卡Item selected wpf上的边框和背景更改
在我的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"></
<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>
注意:-出于测试目的,我更改了上述代码中前台、背景、边框厚度的属性值,因为我找不到静态资源。你必须换回钥匙
我希望我已经表明了一点,让你们继续前进。试一试,如果发现任何问题,请告诉我。如果我很了解有一个属性“模板”具有定义的默认样式,我在哪里可以找到此样式?如果可能的话,你能提供一个链接吗?我一直在寻找,但这似乎是一种风格的重新定义。是的,你是对的。每个控件都定义自己的默认模板。如果您想查看任何给定控件的默认模板,可以单击此链接。希望我已经回答了你的问题。如果我理解得很好,有一个定义了默认样式的属性“模板”,我在哪里可以找到这个样式?如果可能的话,你能提供一个链接吗?我一直在寻找,但这似乎是一种风格的重新定义。是的,你是对的。每个控件都定义自己的默认模板。如果您想查看任何给定控件的默认模板,可以单击此链接。希望我已经回答了你的问题。