2012-09-19 8 views
5

Ich habe einen Button und seine Art:Taste IsEnabled Auslöser funktioniert nicht

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

Aber wenn ich die Taste aktivieren (MyBtn.IsEnabled = true) es nicht seine Opazität ändern. Warum? Wie kann ich dieses Problem lösen? Vielen Dank.

+0

An welchem ​​Punkt rufen Sie MyBtn.IsEnabled = true? Vielleicht bevor der Style initialisiert wird? – Vale

+0

@Vale nein, ich rufe an, wenn ich in eine andere Taste klicke, die Steuerung wurde bereits geladen. – Nick

Antwort

15

Ein lokaler Wert für das Element (Opacity="1" in Ihrem Code) hat immer Vorrang vor einem Style- oder Style-Trigger-Wert. Bitte werfen Sie einen Blick auf Dependency Property Setting Precedence List.

Eine einfache Lösung ist der Standardwert auf den Stil zu setzen statt:

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