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
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.
Je pensais qu'il y aurait un moyen de le faire purement en xaml. – viky