Vous devez spécifier le déclencheur dans le cadre d'un style - la collection Triggers sur le bouton lui-même ne peut contenir que des déclencheurs d'événement. Dans cet esprit, un DataTrigger fonctionne bien. Cependant, il y a une ride: la valeur du Trigger Setter ne remplacera pas une propriété Content locale. Vous devez donc également définir le contenu par défaut dans le style. Voici à quoi cela ressemble:
<Button> <!-- Note no content set directly on button -->
<Button.Style>
<Style TargetType="Button">
<Setter Property="Content" Value="You may write!!!" /> <!-- Here is the 'normal' content -->
<Style.Triggers>
<!-- Here is how we bind to another control's property -->
<DataTrigger Binding="{Binding IsReadOnly, ElementName=textBox}" Value="True">
<Setter Property="Content" Value="NO NO NO" /> <!-- Here is the 'override' content -->
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Ah ha! Je savais qu'il y avait une préséance de propriété, mais il ne me venait pas à l'esprit que le direct écraserait l'action Trigger. J'utilise un DP comme source de liaison et je finis avec le même manque de comportement que d'essayer d'utiliser ElementName, donc le problème était en fait avec la précision de la propriété. Merci d'avoir éclairci ça! – rrhartjr
c'est très bien. juste ce dont j'avais besoin, j'allais presque coder un convertisseur. mais c'est plus agréable. – user1841243
> Cependant, il y a une ride: la valeur du Trigger Setter n'écrase pas une propriété Content locale. Ceci est important! J'ai raté la première fois que j'ai lu cette réponse. – SteveP