我正在开发Visual Studio 2013扩展。我在ToolWindowPane中使用的每个控件都使用与Visual Studio中当前加载的主题相同的背景,使用:
Background="{DynamicResource {x:Static vsfx:VsBrushes.ToolboxBackgroundKey}}"
我向其中一个用户控件添加了标签,我在TabControl
,StackPanel
内的ItemTemplate
和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}}">
但标题仍然如下:
有没有办法将Tab标题样式从Visual Studio应用到我的TabControl,所以它看起来与Visual Studio标签相同?
是否至少有一种方法可以删除标题中样式部分的“白色”背景?
由于
编辑:
Paulo指出我正确的方向:我必须重新定义TabItem的模板。我按照这篇文章的回答:How to make WPF TabItem Headers' Background transparent?。我选择时删除了角半径和边距,并使用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>
结果如下:
答案 0 :(得分:1)
我认为你需要设置TabItem的样式。如果仅使用ItemTemplate,系统将仅替换默认样式的一小部分。
使用新风格,您可以更好地控制自己所展示的内容。
看起来,控制控件不能有一个有效的VS主题。
Paulo Aboim Pinto