模板化TabItem标头不显示标头内容

时间:2014-09-08 08:53:46

标签: c# wpf

我有一个带有两个TabItem的TabControl,我为它创建了一个模板。

<TabControl x:Name="MainInfoTabControl" Grid.Row="3" Grid.RowSpan="7" Grid.Column="0" Grid.ColumnSpan="2" 
                    Background="{x:Null}"
                    BorderBrush="{x:Null}"
                    >
            <TabControl.Resources>

                <Style x:Key="TabHeaderStyle" TargetType="{x:Type TabItem}">
                    <Setter Property="Background" Value="{x:Null}" />
                    <Setter Property="FontWeight" Value="DemiBold" />
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type TabItem}">
                                <Border x:Name="HeaderBorder" BorderBrush="White" BorderThickness="2" CornerRadius="10,10,0,0" >

                                    <TextBlock Text="" VerticalAlignment="Center" Margin="5"></TextBlock>


                                </Border>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </TabControl.Resources>


            <TabItem Header="Main Details" 
                     Margin="0.5, 0.5, 0, 0.5"
                     FontSize="15"
                     MinHeight="40" Width="200"                     
                     Style="{StaticResource TabHeaderStyle}"
                     >         

            </TabItem>


            <TabItem Header="Pets Owned" 
                     Margin="0.5, 0.5, 0, 0.5"
                     FontSize="15"
                     MinHeight="40" Width="200"                     
                     Style="{StaticResource TabHeaderStyle}"
                     >

            </TabItem>


</TabControl>

问题是tabItem的标题没有显示出来。在我的模板中有一个TextBlock,但我无法动态自定义TextBlock.Text(至少绑定或在运行时稍微更改Text属性)

TabItem1应为&#34;所有者详细信息&#34;而TabItem2应该是&#34;宠物拥有&#34;

1 个答案:

答案 0 :(得分:1)

您覆盖默认的tabitem模板,您需要以某种方式获取父级的值。

 <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Header}" 
            VerticalAlignment="Center"
            Margin="5">
 </TextBlock>

<TextBlock Text="{TemplateBinding Property=Header}"
          VerticalAlignment="Center" 
          Margin="5">
</TextBlock>