Подтвердить что ты не робот

Возможно ли использовать заголовки Left-Align в WPC TabControl?

Прямо сейчас у меня есть окно 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 выровнены по левому краю, но вкладки не растягиваются должным образом

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

4b9b3361

Ответ 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? Если вы просто используете ярлык, задаете ли вы ширину метки для некоторого общего значения? Если 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>

Ответ 3

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

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

Ответ 4

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

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