我有一个简单的Button
控件,其中包含一个Image
对象作为其内容。我希望在禁用Image
时将Button
不透明度设置为0.5,以便为Button
状态提供额外的视觉提示。
在XAML中实现该结果的最简单方法是什么?谢谢你的帮助。
答案 0 :(得分:148)
在图像样式中使用触发器。 (将它置于Button样式会更自然,但由于技术上的烦恼,Button样式不会轻易影响Image。它可以在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时禁用Image的事实,因此我们可以直接在Image自己的IsEnabled属性上触发。在其他情况下,我们想要触发的Button属性可能不会被Image继承;在这种情况下,我们需要使用带有FindAncestor RelativeSource的DataTrigger绑定到包含按钮。
答案 1 :(得分:19)
以下是您可以应用的更通用的样式:
<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>
答案 2 :(得分:1)
如果您希望整个按钮显示为灰色,则对按钮本身进行样式设置对我来说很有用。它似乎使所有按钮内容变灰。
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value=".75"/>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>