J'ai le XAML suivant utilisé pour afficher des informations détaillées sur un élément sélectionné dans une vue de liste. Je souhaite que le rectangle affiche la couleur d'information standard derrière le texte, sauf si l'élément sélectionné représente un message d'erreur. Le code ci-dessous ne fonctionne pas tel quel et affiche toujours la couleur info. Cela fonctionne très bien si je ne spécifie pas Fill
pour l'élément racine <Rectangle />
.Comment puis-je remplacer une propriété liée avec un DataTrigger?
<Rectangle Fill="{DynamicResource {x:Static SystemColors.InfoBrushKey}}"
RadiusX="4" RadiusY="4">
<Rectangle.Style>
<Style TargetType="{x:Type Rectangle}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=CurrentMessage.Severity"
Value="Error" >
<Setter Property="Fill" Value="#20FF0000" />
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
L'extrait ne reflète pas, mais le code réel a tout à fait quelques niveaux d'état possibles pour la gravité Je ne veux pas définir un déclencheur pour chaque gravité possible. La logique que je veux est "Utiliser la couleur d'info sauf si la gravité est une erreur, puis utiliser le rouge".
Je suis sûr que j'ai mal compris certains aspects fondamentaux de WPF, mais je n'arrive pas à l'identifier. Quelqu'un peut-il me diriger dans la bonne direction afin que les déclencheurs de données que je spécifie remplaceront la valeur Fill existante quand leurs conditions sont vraies?
Oui, cela a fonctionné. Bien que ... pouvez-vous expliquer pourquoi? Il me semble que la propriété Fill sur le Rectangle serait équivalente. –
Je ne peux pas, non. C'est juste de l'expérience. Je suppose que l'avoir placé sur l'objet lui-même remplace tout ce qui se trouve dans un style. –