Можно ли выравнивать заголовки по левому краю в WPF TabControl? - PullRequest
10 голосов
/ 22 сентября 2009

Прямо сейчас у меня есть окно WPF, в котором центрированы все ярлыки вкладок TabControl.

Я бы хотел, чтобы уровни табуляции TabControl были выровнены по левому краю.

Возможно ли это без полного повторного ввода ControlTemplate?

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

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

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

... Я понял:

Все метки вкладок TabControl выровнены по левому краю, но вкладки не растягиваются должным образом

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

Ответы [ 4 ]

13 голосов
/ 22 сентября 2009

Это даст вам образ, который вам нужен.

    <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>
4 голосов
/ 22 сентября 2009

Какой тип элемента управления вы используете для свойства 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 голосов
/ 22 сентября 2009

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

<TabControl...>
    <TabControl.ItemContainerStyle>
        <Style TargetType="{x:Type TabItem}">
            <Setter Property="HorizontalAlignment" Value="Left"/>
        </Style>
    </TabControl.ItemContainerStyle>
    ...
</TabControl>
1 голос
/ 07 сентября 2011

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

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