是否可以在 WPF TabControl 中左对齐标题?

Posted

技术标签:

【中文标题】是否可以在 WPF TabControl 中左对齐标题?【英文标题】:Is it possible to Left-Align headers in a WPF TabControl? 【发布时间】:2010-11-30 06:21:06 【问题描述】:

现在,我有一个 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 的所有标签页标签都是左对齐的,但标签页没有正确拉伸

这很接近,但最终看起来有点像直方图。

【问题讨论】:

【参考方案1】:

以下内容将为您提供您所追求的外观。

    <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>

【讨论】:

我刚刚进行了测试,并想出了一些外观正确的东西。【参考方案2】:

您对 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>

【讨论】:

好主意,但不太奏效。我编辑了我的问题以显示它的作用。 但是 +1 用于设置 ItemContainerStyle... 的想法可以节省大量标记。请参阅我的第二次编辑。【参考方案4】:

只需将属性 Horizo​​ntalContentAlignment="Left" 添加到 TabControl 即可将选项卡标题左对齐。

<TabControl
Margin="0,5,0,0"
HorizontalContentAlignment="Left"
TabStripPlacement="Left">
<TabItem
    Header="Perform System Administration">
    ...
<TabItem
    Header="Perform Setup Tasks">
    ...

【讨论】:

以上是关于是否可以在 WPF TabControl 中左对齐标题?的主要内容,如果未能解决你的问题,请参考以下文章

在python中左右对齐?

重新排序 WPF TabControl 中的选项卡

WPF TabControl 标头问题

如何在 UITableViewCell 中左对齐或右对齐 UILabel

如何在Android中左对齐TabLayout的标签文本

Android Layout在水平布局中左右对齐