WPF Tabcontrol Tabitem带下划线样式

效果图如下

重写TabItem样式

 <Style TargetType="{x:Type TabItem}">
     <Setter Property="Foreground" Value="Black" />
     <Setter Property="Background" Value="Transparent" />
     <Setter Property="BorderBrush" Value="#FFACACAC" />
     <Setter Property="HorizontalContentAlignment" Value="Center" />
     <Setter Property="VerticalContentAlignment" Value="Center" />
     <Setter Property="Template">
         <Setter.Value>
             <ControlTemplate TargetType="{x:Type TabItem}">
                 <Grid
                     x:Name="templateRoot"
                     Background="Transparent"
                     SnapsToDevicePixels="True">
                     <Border
                         x:Name="_underline"
                         Margin="{TemplateBinding Margin}"
                         BorderBrush="#0054DC"
                         BorderThickness="0" />
                     <Grid Margin="10">
                         <TextBlock
                             x:Name="txt"
                             HorizontalAlignment="Center"
                             VerticalAlignment="Center"
                             FontSize="12"
                             Foreground="{TemplateBinding Foreground}"
                             Text="{TemplateBinding Header}"
                             TextTrimming="CharacterEllipsis"
                             ToolTip="{TemplateBinding Header}"
                             Visibility="Visible" />
                     </Grid>
                 </Grid>
                 <ControlTemplate.Triggers>
                     <MultiDataTrigger>
                         <MultiDataTrigger.Conditions>
                             <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true" />
                             <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type TabControl}}}" Value="Top" />
                         </MultiDataTrigger.Conditions>
                         <Setter TargetName="txt" Property="Foreground" Value="#0054DC" />
                     </MultiDataTrigger>

                     <MultiDataTrigger>
                         <MultiDataTrigger.Conditions>
                             <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="true" />
                             <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type TabControl}}}" Value="Top" />
                         </MultiDataTrigger.Conditions>
                         <Setter Property="Panel.ZIndex" Value="1" />
                         <Setter TargetName="txt" Property="Foreground" Value="#0054DC" />
                         <Setter TargetName="_underline" Property="BorderThickness" Value="0,0,0,2" />
                     </MultiDataTrigger>
                 </ControlTemplate.Triggers>
             </ControlTemplate>
         </Setter.Value>
     </Setter>
 </Style>

TabItem包含2部分,Head和Content,在重写Tabitem样式的时,Content会被自动加到tabitem中。

使用

 <Grid>

     <TabControl>
         <TabItem Header="WPF三天精通">
             <Border>
                 <TextBlock Text="你好wpf" />
             </Border>
         </TabItem>
         <TabItem Header="ios从入门到精通">
             <Border>
                 <TextBlock Text="你好ios" />
             </Border>
         </TabItem>
         <TabItem Header="Swift性能调优">
             <Border>
                 <TextBlock Text="你好Swift" />
             </Border>
         </TabItem>
         <TabItem Header="Android高级技能">
             <Border>
                 <TextBlock Text="你好Android" />
             </Border>
         </TabItem>

     </TabControl>

 </Grid>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值