2

我正在开发一个 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>

结果如下所示:

看起来几乎像 Visual Studio 2013 的标签

4

1 回答 1

1

我认为您需要设置 TabItem 的样式。如果只使用ItemTemplate,系统只会替换一小部分默认样式。

使用新样式,您将更好地控制所展示的内容。

看起来,控制不能有一个有效的 VS 主题。

保罗·阿博伊姆·平托

于 2017-04-26T08:19:21.560 回答