我正在开发一个 Visual Studio 2013 扩展。我在 ToolWindowPane 中使用的每个控件都使用与 Visual Studio 中当前加载的主题相同的背景,使用以下命令:
Background="{DynamicResource {x:Static vsfx:VsBrushes.ToolboxBackgroundKey}}"
我向其中一个用户控件添加了选项卡,并TabControl
在 、StackPanel
内部ItemTemplate
和 Style 中指定了背景TabControl.Resources
,如下所示:
<TabControl
Background="{DynamicResource {x:Static vsfx:VsBrushes.ToolboxBackgroundKey}}"
>
<TabControl.Resources>
<Style TargetType="{x:Type TabPanel}">
<Setter Property="Background" Value="{DynamicResource {x:Static vsfx:VsBrushes.ToolboxBackgroundKey}}" />
</Style>
</TabControl.Resources>
<TabControl.ItemTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal"
Background="{DynamicResource {x:Static vsfx:VsBrushes.ToolboxBackgroundKey}}">
但标题仍然是这样的:
有没有办法将 Visual Studio 中的 Tab 标题样式应用到我的 TabControl,所以它看起来与 Visual Studio 选项卡相同?
是否至少有一种方法可以删除标题中样式部分周围的“白色”背景?
谢谢
编辑:
Paulo 为我指出了正确的方向:我必须重新定义 TabItem 的模板。我遵循了这篇文章的答案:如何使 WPF TabItem 标题的背景透明?. 选中时我删除了圆角半径和边距,并且还使用了 VsBrushes 的颜色:
<TabControl.Resources>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Grid>
<Border
Name="TabItemBorder"
Margin="0,0,-4,0"
Background="{DynamicResource {x:Static vsfx:VsBrushes.FileTabInactiveDocumentBorderBackgroundKey}}"
BorderThickness="1,1,1,1"
>
<ContentPresenter
x:Name="TabItemContentSite"
VerticalAlignment="Center"
HorizontalAlignment="Center"
ContentSource="Header"
Margin="5,2,5,2"
RecognizesAccessKey="True"
/>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Panel.ZIndex" Value="100" />
<Setter TargetName="Border" Property="Background" Value="{DynamicResource {x:Static vsfx:VsBrushes.FileTabSelectedBackgroundKey}}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
结果如下所示: