2012-09-19 10 views
5

Mam Button i jego stylu:Przycisk IsEnabled wyzwalania nie działa

<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> 

Ale kiedy włączyć przycisk (MyBtn.IsEnabled = true) nie zmienia jego krycie. Czemu? Jak mogę rozwiązać ten problem? Dzięki.

+0

W tym momencie dzwonisz MyBtn.IsEnabled = true? Może zanim styl zostanie zainicjowany? – Vale

+0

@Vale nie, zadzwonię po kliknięciu innego przycisku, elementy sterujące zostały już załadowane. – Nick

Odpowiedz

15

Lokalna wartość ustawiona na elemencie (Opacity="1" w kodzie) będzie miała zawsze pierwszeństwo przed stylem lub stylem wartości wyzwalacza. Proszę spojrzeć na Dependency Property Setting Precedence List.

Łatwym rozwiązaniem jest ustawienie wartości domyślnej na styl Zamiast:

<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>