IsSelected时TabItem.Header粗体

时间:2013-12-02 18:18:36

标签: .net wpf tabs tabitem

当TabItem被选中时,想要所有默认样式但是Header FontWeight Bold FontWeight未选中TabItem时正常

<TabItem.Header>
    <TextBlock>Header Text</TextBlock>
</TabItem.Header>

找到了一些例子,但无法做任何工作

5 个答案:

答案 0 :(得分:3)

在TextBlock上应用DataTrigger以查看是否已选择父TabItem,如果评估为真,则将FontWeight设置为Bold

此外,您也可以在TabItem上使用该样式,但由于您提到了TextBlock,我假设您正在使用TextBlock为Header做更多样式。

<TabItem.Header>
   <TextBlock Text="Header Text">
      <TextBlock.Style>
         <Style TargetType="TextBlock">
            <Style.Triggers>
               <DataTrigger Binding="{Binding IsSelected,
                        RelativeSource={RelativeSource AncestorType=TabItem}}" 
                            Value="True">
                   <Setter Property="FontWeight" Value="Bold"/>
                </DataTrigger>
            </Style.Triggers>
         </Style>
     </TextBlock.Style>
   </TextBlock>
</TabItem.Header>

您可以将其放在样式中以便将其重新用于其他tabItems -

<TabControl>
   <TabControl.Resources>
      <Style TargetType="TextBlock" x:Key="HeaderTextBlockStyle">
         <Style.Triggers>
            <DataTrigger Binding="{Binding IsSelected,
                          RelativeSource={RelativeSource AncestorType=TabItem}}"
                         Value="True">
                <Setter Property="FontWeight" Value="Bold"/>
             </DataTrigger>
          </Style.Triggers>
       </Style>
    </TabControl.Resources>
    <TabItem>
       <TabItem.Header>
          <TextBlock Text="Header Text"
                     Style="{StaticResource HeaderTextBlockStyle}"/>
       </TabItem.Header>
    </TabItem>
    <TabItem>
      <TabItem.Header>
        <TextBlock Text="Another Header Text"
                   Style="{StaticResource HeaderTextBlockStyle}"/>
      </TabItem.Header>
    </TabItem>
</TabControl>

答案 1 :(得分:3)

<XXX.Resources>
    <Style TargetType="TabItem" >
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="FontWeight" Value="Bold" />
            </Trigger>
        </Style.Triggers>
    </Style>
</XXX.Resources>

<Grid>
    <TabControl>
        <TabItem Header="Item 1" />
        <TabItem Header="Item 2" />
    </TabControl>        
</Grid>

答案 2 :(得分:3)

圣地亚哥的回答非常接近我所需要的。我仍然需要弄清楚如何附加到TabControl。以下是我最终的结果:

<TabControl>
    <TabControl.Resources>
        <Style TargetType="TabItem">
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="HeaderTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <TextBlock FontWeight="Bold" Text="{Binding}"/>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    </TabControl.Resources>
    <!--TabItems here-->
</TabControl>

答案 3 :(得分:2)

我在一些答案之间使用了一个混合物,这对我来说非常合适:

<Style TargetType="TabItem">
    <Style.Triggers>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="HeaderTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <TextBlock FontWeight="Bold" Text="{Binding}"/>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Trigger>
    </Style.Triggers>
</Style>

答案 4 :(得分:1)

<Style x:Key="ActiveTab" TargetType="{x:Type TabItem}">
    <Style.Resources>
        <DataTemplate x:Key="header">
            <TextBlock Text="{Binding}" FontWeight="Bold" />
        </DataTemplate>
    </Style.Resources>
    <Style.Triggers>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="HeaderTemplate"
                    Value="{StaticResource header}" />
        </Trigger>
    </Style.Triggers>
</Style>