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

时间:2009-09-22 00:33:51

标签: wpf xaml alignment tabcontrol

现在,我有一个看起来像这样的WPF窗口:

All the tab labels of the TabControl are centered http://img33.yfrog.com/img33/9996/tabcontrolcenteredheade.jpg

我希望它看起来像这样(Photoshop doctored image):

All the tab labels of the TabControl are left-aligned http://img42.yfrog.com/img42/6687/tabcontrolleftalignedhe.jpg

这是否可以在不完全重做ControlTemplate

的情况下实现

我尝试弄乱HorizontalAlignmentHorizontalContentAlignment等等,但我尝试过没有任何效果。


修改

如果我尝试这个解决方案(由T Levesque提供)......

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

......我明白了:

All the tab labels of the TabControl are left-aligned, but the tabs don't stretch properly http://img14.imageshack.us/img14/6687/tabcontrolleftalignedhe.jpg

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


编辑2:

为了记录,我最终结合R. Copsey和T. Levesque的答案来达到这个目的:

<TabControl
    Margin="0,5,0,0"
    HorizontalContentAlignment="Left"
    TabStripPlacement="Left">
    <TabControl.ItemContainerStyle>
        <Style
            TargetType="TabItem">
            <Setter
                Property="HorizontalAlignment"
                Value="Stretch" />
            <Setter
                Property="HorizontalContentAlignment"
                Value="Stretch" />
        </Style>
    </TabControl.ItemContainerStyle>
    <TabItem
        Header="Perform System Administration">
        ...
    <TabItem
        Header="Perform Setup Tasks">
        ...

4 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:4)

您对TabItem.Header属性使用什么类型的控件?如果您只是使用Label,您是否将Label的宽度指定为某个常用值?如果Label正在调整内容大小,那么它将显示为您显示的内容。对于用于显示标题文本的标签,请尝试以下常用宽度:

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

答案 2 :(得分:3)

您可以为所有标签页定义水平对齐方式:

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

答案 3 :(得分:1)