Button IsEnabled Trigger does not work
Asked Answered
E

1

7

I have a Button and its Style:

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

But when I enable the Button (MyBtn.IsEnabled = true) it does not change its Opacity. Why? How can I solve this problem? Thanks.

Eratosthenes answered 19/9, 2012 at 11:45 Comment(2)
At which point are you calling MyBtn.IsEnabled = true? Maybe before style is initialized?Roomer
@Roomer no, i call when i click in another button, the controls have already been Loaded.Eratosthenes
J
24

A local value set on the element (Opacity="1" in your code) will always take precedence over a style or style trigger value. Please have a look at Dependency Property Setting Precedence List.

An easy fix is to set the default value on the style instead:

<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>
Jemadar answered 19/9, 2012 at 11:54 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.