以下在禁用按钮时使图像变暗并在启用时清晰显示:
<Style TargetType="{x:Type Image}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type UIElement}, AncestorLevel=1}, Path=IsEnabled}" Value="False">
<Setter Property="Opacity" Value="0.25"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
...
<Button Name="btnPageFirst" IsEnabled="False">
<Image Source="..\Resources\imgMoveFirst.png" />
</Button>
<Style TargetType="{x:Type Image}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type UIElement}, AncestorLevel=1}, Path=IsEnabled}" Value="False">
<Setter Property="Opacity" Value="0.25"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
...
<Button Name="btnPageFirst" IsEnabled="False">
<Image Source="..\Resources\imgMoveFirst.png" />
</Button>
我想用Path做类似的效果。我想灰色图像。但它没有灰色,也没有错误。
答案 0 :(得分:7)
有precedence order用于在运行时计算依赖项属性的值。
过度简化的优先级列表:
您的问题是您在路径上设置Fill="DodgerBlue"
并且因为它具有更高的优先级,因此触发器是您看不到填充更改的方式。这就是为什么它适用于你的Image
,因为你没有直接设置不透明度。
使其有效:
Fill="DodgerBlue"
以您的风格设置:
<Style TargetType="{x:Type Path}">
<Style.Setters>
<Setter Property="Fill" Value="DodgerBlue"/>
</Style.Setters>
<Style.Triggers>
<!-- ... -->
</Style.Triggers>
</Style>
作为旁注:如果您总是在“按钮内”,则可以将RelativeSource
重写为:
RelativeSource={RelativeSource AncestorType={x:Type Button}}