1
我正在創建一個帶簡單折線的按鈕,當按鈕被禁用時(btnUp.IsEnabled = false
),我想更改顏色。WPF觸發器和綁定問題
我嘗試這樣做:
<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>
但折線仍然具有相同的(綠)色當按鈕被禁用。儘管由於button.foreground和polyline.stroke之間的數據綁定,我確實希望它是白色的。
但是,如果我改變觸發這個它的工作原理(鍵摺疊):
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Visibility" Value="Collapsed"/>
</Trigger>
明確的屬性值是優先級高於觸發值,這是優先級高於樣式值 - 讓你的解決方法是完全正確的。有關更多背景信息,請閱讀「依賴屬性設置優先級列表」部分:http://msdn.microsoft.com/zh-cn/library/ms743230.aspx – 2010-11-22 01:25:35