Можно ли выравнивать заголовки слева в WPF TabControl?

прямо сейчас у меня есть окно WPF, которое выглядит так:

все метки вкладок TabControl центрированы http://img33.yfrog.com/img33/9996/tabcontrolcenteredheade.jpg

Я хотел бы, чтобы это выглядело так (Photoshop doctored image):

все метки вкладок TabControl выровнены по левому краю http://img42.yfrog.com/img42/6687/tabcontrolleftalignedhe.jpg

возможно ли это без полной переделки the ControlTemplate?

Я пытался возиться с HorizontalAlignment, HorizontalContentAlignment, etc. но ничего из того, что я пробовал, не давало желаемого эффекта.


Edit:

если я попробую это решение (предложенное T Levesque)...

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

...Я понимаю:

все метки вкладок TabControl выровнены по левому краю, но вкладки не растягиваются должным образом http://img14.imageshack.us/img14/6687/tabcontrolleftalignedhe.jpg

что близко, но в итоге это выглядит как гистограмма.


Edit 2:

для записи, я закончил тем, что объединил ответы Р. Копси и т. Левеска, чтобы прийти к этому:

<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 ответов


следующее даст вам взгляд, который вы ищете.

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

какой элемент управления вы используете для TabItem.Свойство заголовка? Если вы просто используете метку, вы указываете ширину метки на какое-то общее значение? Если метка имеет размер содержимого, она будет отображаться так, как вы показали. Попробуйте следующее с общей шириной для меток, используемых для отображения текста заголовка:

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

вы можете определить горизонтальное выравнивание для всех заголовков вкладок:

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

простое добавление атрибута HorizontalContentAlignment= "Left" в TabControl выровняет заголовки вкладок слева.

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