wpf TabControl 样式重写

 <TabControl TabStripPlacement="Left">
     <TabControl.Resources>
         <Style TargetType="TabItem">
             <Setter Property="FontSize" Value="14" />
             <Setter Property="Foreground" Value="Black" />
             <Setter Property="Template">
                 <Setter.Value>
                     <ControlTemplate TargetType="TabItem">
                         <Border 
                             Name="Border" Cursor="Hand"
                             BorderBrush="{TemplateBinding BorderBrush}" 
                             BorderThickness="{TemplateBinding BorderThickness}" 
                             CornerRadius="2" 
                             Padding="{TemplateBinding Padding}">
                             <ContentPresenter x:Name="ContentSite"
                                 VerticalAlignment="Center"
                                 HorizontalAlignment="Center"
                                 ContentSource="Header"/>
                         </Border>
                         <ControlTemplate.Triggers>
                             <Trigger Property="IsSelected" Value="True">
                                 <Setter TargetName="Border" Property="Background" Value="#0054CB" />
                             </Trigger>
                             <Trigger Property="IsEnabled" Value="False">
                                 <Setter TargetName="Border" Property="Background" Value="Gray" />
                             </Trigger>
                         </ControlTemplate.Triggers>
                     </ControlTemplate>
                 </Setter.Value>
             </Setter>
             <!--通过此逻辑修改前景色时需要注意TabItem内部的颜色也会同步修改-->
             <Style.Triggers>
                 <Trigger Property="IsSelected" Value="True">
                     <Setter Property="Foreground" Value="White" />
                 </Trigger>
             </Style.Triggers>
         </Style>
     </TabControl.Resources>
     <TabItem >
         <TabItem.Header>
             <TextBlock Text="TabItem1">
                 <!--如果不使用TabItem的trigger修改颜色也可以通过修改内容的颜色-->
                 <!--<TextBlock.Style>
                     <Style TargetType="TextBlock">
                         <Setter Property="FontSize" Value="14" />
                         <Style.Triggers>
                             <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor,
                                                                                 AncestorType={x:Type TabItem}},
                                                                                 Path=IsSelected}" Value="True">
                                 <Setter Property="Foreground" Value="White"/>
                             </DataTrigger>
                             <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor,
                                                                                 AncestorType={x:Type TabItem}},
                                                                                 Path=IsSelected}" Value="False">
                                 <Setter Property="Foreground" Value="Black"/>
                             </DataTrigger>
                         </Style.Triggers>
                     </Style>
                 </TextBlock.Style>-->
             </TextBlock>
         </TabItem.Header>
         <TextBlock Text="test"/>
     </TabItem>
     <TabItem Header="111">
         <TextBlock Text="111" />
     </TabItem>
 </TabControl>
posted @ 2025-06-20 13:53  Hey,Coder!  阅读(33)  评论(0)    收藏  举报