“灰色”的WPFbutton图像?

我有一个简单的Button控件,它包含一个Image对象作为其内容。 我想这样设置的Image不透明度为0.5时, Button被禁用,以提供一个额外的视觉提示作为Button状态。

在XAML中完成这个结果最简单的方法是什么? 谢谢你的帮助。

在图像样式中使用触发器。 (把它放在button样式中会更自然一些,但是button样式不会因为烦人的技术原因而轻易地影响到图像, 可以在Button的ControlTemplate中完成,但是这对于你想要的来说太过分了)。

 <Button> <Image Source="something.png"> <Image.Style> <Style TargetType="Image"> <Style.Triggers> <Trigger Property="IsEnabled" Value="False"> <Setter Property="Opacity" Value="0.5" /> </Trigger> </Style.Triggers> </Style> </Image.Style> </Image> </Button> 

请注意,我们正在利用这个事实,即禁用button时图像将被禁用,因此我们可以直接在图像自身的IsEnabled属性上进行触发。 在其他情况下,我们要触发的Button属性可能不会被Imageinheritance; 在这种情况下,我们需要使用带有FindAncestor RelativeSource的DataTrigger绑定到包含button。

如果你想要更通用的东西,把它放在你的窗口或UserControl的资源部分。

 <UserControl.Resources> <Style x:Key="ImageEnabled" TargetType="Image"> <Style.Triggers> <Trigger Property="IsEnabled" Value="False"> <Setter Property="Opacity" Value="0.25"></Setter> </Trigger> </Style.Triggers> </Style> </UserControl.Resources> 

而在实际的button只是做到这一点

 <Button> <Image Source="{StaticResource LinkImage}" Style="{StaticResource ImageEnabled}"/> </Button> 

这是一个更通用的风格,你可以申请:

 <Style TargetType="Button"> <Style.Resources> <Style TargetType="Image"> <Style.Triggers> <Trigger Property="IsEnabled" Value="False"> <Setter Property="Opacity" Value="0.5" /> </Trigger> </Style.Triggers> </Style> </Style.Resources> </Style>