在 WPF TabControl 中左对齐标头是否可行?

10

现在,我有一个WPF窗口,在这个窗口中,TabControl的所有选项卡标签都是居中的。

我希望TabControl的选项卡标签左对齐。

不重新制作ControlTemplate的情况下,是否可能实现这一点?

我尝试过调整HorizontalAlignmentHorizontalContentAlignment等属性,但没有达到预期效果。

如果我尝试使用T Levesque提供的解决方案:

<TabControl...>
    <TabControl.ItemContainerStyle>
        <Style TargetType="{x:Type TabItem}">
            <Setter Property="HorizontalAlignment" Value="Left"/>
        </Style>
    </TabControl.ItemContainerStyle>
    ...
</TabControl>

我理解为:

我遇到的问题是:TabControl 的所有标签都是左对齐的,但是它们的长度没有正确地拉伸开来。

虽然这种情况与直方图有些相似,但还是不太符合要求。

4个回答

15
以下内容将给你想要的外观。
    <TabControl TabStripPlacement="Left" HorizontalContentAlignment="Left" >
        <TabItem HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" Header="Header 1">
            <TabItem.Content>Test</TabItem.Content>
        </TabItem>

        <TabItem HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" Header="Header 2"  >
            <TabItem.Content>Test</TabItem.Content>
        </TabItem>

        <TabItem HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" Header="Header Longer Version">
            <TabItem.Content>Test</TabItem.Content>
        </TabItem>
    </TabControl>

我刚刚测试了一下,得到了外观正确的结果。 - Reed Copsey

4
您在TabItem.Header属性中使用了哪种控件?如果您只是使用标签,是否将标签的宽度指定为一些常见值?如果标签大小调整为内容,则会显示您所示的情况。尝试使用用于显示标题文本的标签的常见宽度来执行以下操作:
<TabControl TabStripPlacement="Left" >
    <TabItem>
        <TabItem.Header>
            <Label Width="100">test tab 1</Label>
        </TabItem.Header>
        <TabItem.Content>
            xyz
        </TabItem.Content>
    </TabItem>
    <TabItem>
        <TabItem.Header>
            <Label Width="100">test t2</Label>
        </TabItem.Header>
        <TabItem.Content>
            abc
        </TabItem.Content>
    </TabItem>
    <TabItem>
        <TabItem.Header>
            <Label Width="100">test tab three</Label>
        </TabItem.Header>
        <TabItem.Content>
            abc
        </TabItem.Content>
    </TabItem>
</TabControl>

3

您可以为所有选项卡标题定义水平对齐方式:

<TabControl...>
    <TabControl.ItemContainerStyle>
        <Style TargetType="{x:Type TabItem}">
            <Setter Property="HorizontalAlignment" Value="Left"/>
        </Style>
    </TabControl.ItemContainerStyle>
    ...
</TabControl>

好主意,但不太起作用。我编辑了我的问题以显示它的操作方式。 - devuxer
但是为ItemContainerStyle设置想法加1...节省了很多标记。请见我的第二次编辑。 - devuxer

3
只需将属性HorizontalContentAlignment="Left" 添加到TabControl中即可使选项卡标题左对齐。
<TabControl
Margin="0,5,0,0"
HorizontalContentAlignment="Left"
TabStripPlacement="Left">
<TabItem
    Header="Perform System Administration">
    ...
<TabItem
    Header="Perform Setup Tasks">
    ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接