我有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
)时,它不会改变其不透明度。为什么?我怎么解决这个问题?感谢。
答案 0 :(得分:17)
元素上设置的本地值(代码中的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>