2012-09-19 3 views
5

У меня есть Button и его стиль:Кнопка IsEnabled Trigger не работает

<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 no, я звоню, когда я нажимаю другую кнопку, элементы управления уже загружены. – 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> 
Смежные вопросы