Je crée un bouton avec un simple polyligne que je veux changer de couleur lorsque le bouton est désactivé (btnUp.IsEnabled = false
).Problème de déclenchement et de liaison WPF
J'ai essayé ceci:
<RepeatButton x:Name="btnUp" Foreground="Green">
<RepeatButton.Style>
<Style TargetType="{x:Type RepeatButton}">
<Setter Property="Content">
<Setter.Value>
<Polyline x:Name="arrowUp" Points="0,2 3,0 6,2" Stroke="{Binding RelativeSource={RelativeSource AncestorType=RepeatButton}, Path=Foreground, Mode=TwoWay}" StrokeThickness="2"/>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="#FFFFFFFF"/>
</Trigger>
</Style.Triggers>
</Style>
</RepeatButton.Style>
</RepeatButton>
Mais le Polyligne a toujours la même couleur (vert) lorsque le bouton est désactivé. Même si je m'attendais à ce qu'il soit blanc en raison de la liaison de données entre le button.foreground et polyline.stroke.
Cependant, si je change le déclencheur pour cela, il fonctionne (le bouton est réduit):
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Visibility" Value="Collapsed"/>
</Trigger>
valeurs de propriété explicites sont-priorité plus élevée que les valeurs de déclenchement, qui sont de priorité plus élevée que les valeurs de style - de sorte que votre solution est tout à fait correct. Pour plus d'informations, consultez la section «Liste des priorités de configuration des propriétés de dépendance» de: http://msdn.microsoft.com/fr-fr/library/ms743230.aspx –