我正在编写一个WPF应用程序并尝试设置TabItem标题的样式,以便在选中时显示带有背景颜色变化的边框。问题是,当我添加该样式时,它会破坏TabItem中我的TextBlock项的样式。我不是WPF / XAML专家。以下是我在TabControl中使用的样式。我也在使用MahApps地铁设计。任何想法都将不胜感激。
<TabControl.Resources>
<Style TargetType="TabItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabItem">
<Border Name="Border" BorderThickness="1,1,1,0" BorderBrush="Gainsboro" CornerRadius="4,4,0,0" Margin="2,0">
<ContentPresenter x:Name="ContentSite"
VerticalAlignment="Center"
HorizontalAlignment="Center"
ContentSource="Header"
Margin="10,2"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="Border" Property="Background" Value="{DynamicResource AccentColorBrush}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.Resources>
答案 0 :(得分:1)
当您为WPF控件编写新样式时,如果您并未完全重新设置所有内容,则最好使其继承现有的隐式样式。那里可能还有很多其他你不想丢失的东西,看起来就是这种情况。尝试将BasedOn
属性设置为隐式TabItem
样式:
<Style TargetType="TabItem" BasedOn="{StaticResource {x:Type TabItem}}">
看看是否有帮助。
答案 1 :(得分:0)
您还可以在外部定义样式。此样式将帮助您包装标题内容并将标题内容与中心对齐。
<Style x:Key="newTabItemStyle" TargetType="{x:Type TabItem}">
<setter property="MaxWidth" value="150"/>
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate >
<TextBlock TextWrapping="Wrap" Text="{Binding}" TextAlignment="Center"/>
</DataTemplate>
</Setter.Value>
</Setter>