在Blend中制作了一个外观不错的选项卡,但我的ContentPresenter
必须关闭-它不显示TabItem
标题文本。
编辑1:实现了CodeNaked的建议和Rachel的回答,所以如果你喜欢的话,你可以直接使用这种风格。
<Style x:Key="TabItemStyle2" TargetType="{x:Type TabItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Grid>
<Border BorderThickness="3" CornerRadius="5,5,0,0">
<Border.BorderBrush>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#7F605F5F" Offset="0"/>
<GradientStop Color="#7F7E7E7E" Offset="1"/>
</LinearGradientBrush>
</Border.BorderBrush>
<Border.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF6096E5" Offset="0.004"/>
<GradientStop Color="#FF6096E5" Offset="0.823"/>
<GradientStop Color="White" Offset="0.228"/>
</LinearGradientBrush>
</Border.Background>
</Border>
<Border x:Name="BorderGlass" BorderThickness="3" CornerRadius="5,5,0,0" Background="#7FFDFDFD">
<Border.BorderBrush>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#7FFFFFFF" Offset="0"/>
<GradientStop Color="#BFFFFFFF" Offset="0.401"/>
<GradientStop Color="#F2FFFFFF" Offset="0.254"/>
</LinearGradientBrush>
</Border.BorderBrush>
</Border>
<ContentPresenter HorizontalAlignment="Center" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center" ContentPresenter ContentSource="Header">
<ContentPresenter.OpacityMask>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF6096E5" Offset="0"/>
<GradientStop Color="#FF6096E5" Offset="0.823"/>
<GradientStop Color="White" Offset="0.228"/>
</LinearGradientBrush>
</ContentPresenter.OpacityMask>
</ContentPresenter>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
尝试将ContentSource="Header"
添加到您的ContentPresenter
<ContentPresenter ContentSource="Header" ... >
您的第一个样式实际上并不有效。您不应该在正在设置样式的控件中定义控件。在第一个样式中,在TabItem的控制模板中包含一个TabItem。这是你不应该做的。
Rachel的回答解决了你的第二种风格的问题。