我有一个简单的Button控件,其中包含一个Image对象作为其内容.我想Image在Button禁用时将不透明度设置为0.5 ,以便为Button状态提供额外的视觉提示.
在XAML中实现该结果的最简单方法是什么?谢谢你的帮助.
ito*_*son 155
在图像样式中使用触发器.(将它置于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>
Run Code Online (Sandbox Code Playgroud)
注意我们在这里利用了这样一个事实:当Button被禁用时,Image将被禁用,因此我们可以直接在Image自己的IsEnabled属性上触发.在其他情况下,我们想要触发的Button属性可能不会被Image继承; 在这种情况下,我们需要使用带有FindAncestor RelativeSource的DataTrigger来绑定到包含按钮.
小智 37
如果您想要更通用的东西,请将其放在窗口或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>
Run Code Online (Sandbox Code Playgroud)
而在实际按钮中就是这样做的
<Button>
<Image Source="{StaticResource LinkImage}" Style="{StaticResource ImageEnabled}"/>
</Button>
Run Code Online (Sandbox Code Playgroud)
Tow*_*wer 20
这是您可以应用的更通用的样式:
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35090 次 |
| 最近记录: |