Düğme Devre Dışı (btnUp.IsEnabled = false
) olduğunda rengi değiştirmek istediğim basit bir Polyline ile bir düğme oluşturuyorum. WPF Tetikleme ve Ciltleme sorunu
<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>
Ama düğme devre dışı bırakıldığında Polyline hala aynı (Yeşil) rengi vardır. Button.foreground ve polyline.stroke arasındaki veri bağlantısı nedeniyle beyaz olmasını beklemiş olmama rağmen. Bunun için tetiği değiştirirseniz
Ancak (düğme daraltılmış) çalışır:
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Visibility" Value="Collapsed"/>
</Trigger>
Açık özellik değerleri tarzı değerlerinden daha yüksek öncelikli olan tetik değerlerinden daha yüksek öncelikli - böylece düzeltme tam doğrudur. Daha fazla bilgi için, http://msdn.microsoft.com/en-us/library/ms743230.aspx adresindeki "Bağımlılık Özelliği Önceliği Listesi" bölümünü okuyun. –