我正在编写一个WPF应用程序,并尝试样式的TabItem头只显示一个边框与背景颜色变化时选择。问题是,当我添加该样式时,它会在TabItem中弄乱我的TextBlock项的样式。我不是WPF / XAML专家。下面是我在TabControl中使用的样式。我也在使用MahApps metro样式。任何想法都将不胜感激。
<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>发布于 2017-01-07 04:02:54
当您为WPF控件编写新样式时,如果您没有完全重置所有内容,最好使其继承现有的隐式样式。这里面可能还有很多你不想失去的东西,看起来就是这种情况。尝试将BasedOn属性设置为隐式TabItem样式:
<Style TargetType="TabItem" BasedOn="{StaticResource {x:Type TabItem}}">看看这有没有帮助。
发布于 2017-04-04 19:45:21
您还可以在外部定义样式。此样式将帮助您将标题内容换行,并将标题内容居中对齐。
<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>
https://stackoverflow.com/questions/41511983
复制相似问题