2012-06-17 157 views
3

我有一個ControlTemplate內的ContentPresenter嘗試佈局TabItem。我希望標題內的TextBlock的前景顏色在選中標籤時改變顏色。我的模板如下:ContentPresenter觸發器無法正常工作

<TabControl.Resources> 
    <Style TargetType="TabPanel"> 
     <Setter Property="HorizontalAlignment" Value="Right" /> 
    </Style> 
    <Style TargetType="TabControl"> 
     <Setter Property="BorderThickness" Value="0,0,0,0"></Setter> 
    </Style> 
    <Style TargetType="TabItem"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TabItem}"> 
        <ContentPresenter x:Name="ContentSite" 
             VerticalAlignment="Center" 
             HorizontalAlignment="Center" 
             ContentSource="Header" 
             Margin="30,10,30,10"/> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsSelected" Value="True"> 
          <Setter TargetName="ContentSite" Property="TextBlock.Foreground" Value="DarkGoldenrod"></Setter> 
         </Trigger>  
         <Trigger Property="IsSelected" Value="False"> 
          <Setter TargetName="ContentSite" Property="TextBlock.Foreground" Value="Black"></Setter> 
         </Trigger>  
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</TabControl.Resources> 

不幸的是,觸發器什麼都不做。 SO上的其他幾個帖子顯示Setter標籤,看起來和我的完全一樣,使用TargetName來確保我們只更改標題而不是整個標籤。該財產被認可並編譯,但沒有任何反應。

這是怎麼回事,我做錯了什麼?這已經讓我堅持了幾個小時!

回答

2

知道了!

我有過這樣的標題:

<TabItem.Header> 
    <TextBlock>My Header</TextBlock> 
</TabItem.Header> 

問題是,有已經頭裏面一個TextBlock,你並不需要再次換行。

<TabItem.Header> 
    My Header 
</TabItem.Header> 

它的工作原理。

1

完全按照我的預期工作,您的問題可能會躺在別處...