wpf 按钮IsEnabled触发器不起作用

k7fdbhmy  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(488)

我有一个Button和它的风格:

<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)时,它不会改变它的不透明度。为什么?我该如何解决这个问题?谢谢。

4xy9mtcn

4xy9mtcn1#

在元素上设置的局部值(代码中为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>

相关问题