2012-09-19 16 views
5

Ho un Button e il suo stile:Pulsante IsEnabled trigger non funziona

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

Ma quando ho attivare il pulsante (MyBtn.IsEnabled = true) non cambia la sua opacità. Perché? Come posso risolvere questo problema? Grazie.

+0

A quel punto stai chiamando MyBtn.IsEnabled = true? Forse prima che lo stile sia inizializzato? – Vale

+0

@Vale no, chiamo quando clicco su un altro pulsante, i controlli sono già stati caricati. – Nick

risposta

15

Un valore locale impostato sull'elemento (Opacity="1" nel codice) avrà sempre la precedenza su un valore di trigger di stile o stile. Si prega di dare un'occhiata a Dependency Property Setting Precedence List.

una soluzione semplice è quella di impostare il valore di default sullo stile invece:

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