Можно ли выравнивать заголовки слева в WPF TabControl?
прямо сейчас у меня есть окно WPF, которое выглядит так:
Я хотел бы, чтобы это выглядело так (Photoshop doctored image):
возможно ли это без полной переделки 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>
...Я понимаю:
что близко, но в итоге это выглядит как гистограмма.
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">
...