2010-11-24 11 views
0

Je travaille avec Wpf. J'utilise TabControl, Dans certaines conditions, l'en-tête de TabItem contient le symbole '*'. J'ai besoin d'écrire un déclencheur pour que chaque fois qu'il y a un tel contenu dans l'en-tête, l'arrière-plan de TabItem change. Je ne suis pas capable de trouver un moyen de le faire dans xaml. Toute aide plz.Comment vais-je écrire ce Trigger?

Répondre

2

Si je comprends bien votre question, je pense que vous rencontrez le même problème fondamental que la personne qui a posé cette question: WPF Trigger when property value is greater than a certain amount qui, malheureusement, liens vers un autre post sur le forum: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/a8ad8c14-95aa-4ed4-b806-d0ae874a8d26/ mais je vais résumer ici:

Si vous utilisez un DataTrigger au lieu d'un trigger normal et que vous liez le texte d'en-tête, vous pouvez exécuter la valeur via IValueConverter, ce qui vous permettra de convertir votre chaîne en valeur booléenne True/False. ne pas.

<TabItem Header="TabItem"> 
    <TabItem.Style> 
     <Style TargetType="TabItem"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=Header, RelativeSource={RelativeSource Self}, Converter={StaticResource HasAsteriskConverter}}" Value="True"> 
        <Setter Property="Foreground" Value="Blue" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </TabItem.Style> 
<Grid /> 
</TabItem> 

Notez que mon exemple définit le premier plan, parce que le style de l'élément onglet semble remplacer la valeur d'arrière-plan et cela répond toujours à la question initiale.

+0

Je pensais qu'il y aurait un moyen de le faire purement en xaml. – viky