我的自定义TabItem标题如下所示:
<sdk:TabControl>
<sdk:TabItem >
<sdk:TabItem.Header>
<Grid Background="Gray" HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<!-- some labels go here -->
</Grid>
</sdk:TabItem.Header>
</sdk:TabItem>
</sdk:TabControl>
这会在TabItem标头内部创建一个单行的双列网格。网格自动调整大小以适应标签,但是当实际标签按钮的大小增加时,网格不会调整以填充空间(即使我指定<HorizontalAlignment="Stretch">
)。
这是为什么?有没有办法让网格占用标题中所有可用的水平空间?
答案 0 :(得分:1)
问题是用于呈现标签的TabItem
的默认模板会将标题的内容放在ContentControl
中。现在,ContentControl
的属性HorizontalContentAlignment
和VerticalContentAlignment
的默认值为“Left”和“Top”。这就是为什么你的网格只占用它所需的空间而不是拉伸到可用的全部大小的原因。
为了避免这种情况,您需要复制TabItem
的默认模板,并将值“Stretch”分配给模板中ContentControl
元素的这两个属性(总共有8个,每个可能的TabStrip位置有2个(顶部,左侧,底部和右侧)。