2013-12-02 3 views
1

Хочет все стили по умолчанию, но заголовок FontWeight Жирных когда TabItem IsSelected
FontWeight Нормальный, когда TabItem не выбранTabItem.Header Жирные Когда IsSelected

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

Обнаружил несколько примеров, но не может сделать любую работу

ответ

3

Применить DataTrigger на TextBlock, чтобы узнать, выбран ли родительский TabItem и FontWeight - Bold, если он оценивает истинность.

Также вы можете иметь этот стиль на TabItem, но так как вы упомянули об этом TextBlock, я предполагаю, что вы делаете больше стилей с TextBlock там для заголовка.

<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> 

Вы можете поместить это в стиле, чтобы resuse его для других 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> 
+0

Работы. Любой шанс, что я могу применить это один раз на вкладке и не устанавливать его для каждого TabItem? – Paparazzi

+0

Да, определите его в разделе ресурсов и повторно используйте его для всех tabItems. Я обновил ответ, пожалуйста, проверьте. –

+1

Сделал трюк, спасибо. – Paparazzi

2
<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> 
+0

Это решение лучше, чем один @RohitVats', потому что это гораздо более многоразовые, и вы только определить один раз в стиле, а не на основе каждого элемента. –

+2

Спасибо, это выделяет заголовок, но также выделяет содержимое. Я хочу только смело заголовок. Пока не тестировал ответ от Рохит VATs – Paparazzi

+0

O'k не думать о том, что я буду править ответ с исправлением чуть позже. –

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> 
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> 
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> 
Смежные вопросы