TabItem标题内的Silverlight Grid

时间:2011-06-16 23:01:14

标签: silverlight silverlight-4.0

我的自定义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">)。

这是为什么?有没有办法让网格占用标题中所有可用的水平空间?

1 个答案:

答案 0 :(得分:1)

问题是用于呈现标签的TabItem的默认模板会将标题的内容放在ContentControl中。现在,ContentControl的属性HorizontalContentAlignmentVerticalContentAlignment的默认值为“Left”和“Top”。这就是为什么你的网格只占用它所需的空间而不是拉伸到可用的全部大小的原因。

为了避免这种情况,您需要复制TabItem的默认模板,并将值“Stretch”分配给模板中ContentControl元素的这两个属性(总共有8个,每个可能的TabStrip位置有2个(顶部,左侧,底部和右侧)。