2012-09-19 42 views
5

我有一個Button及其風格:按鈕的IsEnabled觸發不起作用

<Button Name="MyBtn" Style="{StaticResource ButtonEnabledStyle}" 
     IsEnabled="False" Opacity="1" /> 

<Style x:Key="ButtonEnabledStyle" TargetType="Button"> 
    <Style.Triggers> 
     <Trigger Property="IsEnabled" Value="True" > 
      <Setter Property="Opacity" Value="0.1" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

但是,當我啓用按鈕(MyBtn.IsEnabled = true)它不會改變其不透明度。爲什麼?我怎麼解決這個問題?謝謝。

+0

在這一點你叫MyBtn.IsEnabled =真的嗎?也許在風格初始化之前? – Vale

+0

@Vale不,我打電話時,我點擊另一個按鈕,控件已經加載。 – Nick

回答

15

在元素上設置的本地值(代碼中的Opacity="1")將始終優先於樣式或樣式觸發器值。請看Dependency Property Setting Precedence List

一個簡單的辦法是設置的樣式而不是默認值:

<Style x:Key="ButtonEnabledStyle" TargetType="Button"> 
    <Setter Property="Opacity" Value="1.0" /> 
    <Style.Triggers> 
    <Trigger Property="IsEnabled" Value="True" > 
     <Setter Property="Opacity" Value="0.1" /> 
    </Trigger> 
    </Style.Triggers> 
</Style>