如何在tabcontrol中的选项卡之间添加分隔符?

问题描述 投票:3回答:2

我正在设置我的标签样式,以便它只显示标题文本,但我想在它们之间添加一个分隔符。现在标签看起来像:

Content1 Content2

有没有办法我可以在选项卡之间添加一个Separator,使它看起来像:

Content1 |内容2

我已经可以像这样设置一个垂直分隔符,但我无法弄清楚如何将它放在标签之间。我不想使用制表符边框伪造分隔符,我想远离使用 <TabItem Header="|" IsEnabled="False" />也是假的。有一个优雅的解决方案吗?

这是我到目前为止:

<TabControl Background="Transparent" BorderThickness="0">
    <TabItem Header="Content1">
        <!--content1-->
    </TabItem>
    <TabItem Header="Content2">
        <!--content2-->
    </TabItem>
    <TabControl.Resources>
        <Style TargetType="{x:Type TabItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TabItem}">
                        <Border Margin="2,0">
                            <ContentPresenter ContentSource="Header" Margin="10,2" />
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter Property="Foreground" Value="White" />
                            </Trigger>
                            <Trigger Property="IsSelected" Value="False">
                                <Setter Property="Foreground" Value="Gray" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </TabControl.Resources>
</TabControl>

提前致谢!

wpf xaml tabcontrol
2个回答
0
投票

我结束了这个:

<TabItem IsEnabled="False" IsHitTestVisible="False">
    <TabItem.Header>
        <Separator Style="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" Height="10" Background="Black" />
    </TabItem.Header>
</TabItem>

0
投票

对于任何来到这里的人来说,看到可能的答案(像我一样)。 我是这样做的:

在您的资源中定义三种样式

样式1(带两个分隔符):

<Style TargetType="TabItem" x:Key="TabItemWithBothSeparators">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TabItem">
                    <Border BorderBrush="DarkGray" BorderThickness="1,0">
                        <Grid Name="Panel">
                            <ContentPresenter x:Name="ContentSite" ContentSource="Header" />
                        </Grid>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
</Style>

样式2(左侧分隔符):

<Style TargetType="TabItem" x:Key="TabItemWithLeftSeparator">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TabItem">
                    <Border BorderBrush="DarkGray" BorderThickness="1,0,0,0">
                        <Grid Name="Panel">
                            <ContentPresenter x:Name="ContentSite" ContentSource="Header" />
                        </Grid>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
</Style>

样式3(没有分隔符):

<Style TargetType="TabItem" x:Key="TabItemWithoutSeparators">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TabItem">
                        <Grid Name="Panel">
                            <ContentPresenter x:Name="ContentSite" ContentSource="Header" />
                        </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
</Style>

然后以这种方式设置样式(下面的代码示例):

  • 在奇数TabItems计数(1,3,5,7,...)上将样式设置为TabItemWithoutSeparators
  • 甚至TabItems计数(2,4,6,8,...)将样式设置为TabItemWithBothSeparators
  • 当您的上一个TabItem计数为偶数时,将其样式设置为TabItemWithLeftSeparator,否则设置为TabItemWithoutSeparators

偶数TabItems计数的示例

<TabItem Header="Item 1" Style="{StaticResource TabItemWithoutSeparators}">
    <!--content 1-->
</TabItem>
<TabItem Header="Item 2" Style="{StaticResource TabItemWithBothSeparators}">
    <!--content 2-->
</TabItem>
<TabItem Header="Item 3" Style="{StaticResource TabItemWithoutSeparators}">
    <!--content 3-->
</TabItem>
<TabItem Header="Item 4" Style="{StaticResource TabItemWithLeftSeparator}">
    <!--content 4-->
</TabItem>

奇数TabItems计数的示例

<TabItem Header="Item 1" Style="{StaticResource TabItemWithoutSeparators}">
    <!--content 1-->
</TabItem>
<TabItem Header="Item 2" Style="{StaticResource TabItemWithBothSeparators}">
    <!--content 2-->
</TabItem>
<TabItem Header="Item 3" Style="{StaticResource TabItemWithoutSeparators}">
    <!--content 3-->
</TabItem>

希望这可以帮助!肯定有更优雅的方式来获得这个分隔符......

© www.soinside.com 2019 - 2024. All rights reserved.