WPF XAML 在 IsEnabled 状态下更改图像不透明度
Posted
技术标签:
【中文标题】WPF XAML 在 IsEnabled 状态下更改图像不透明度【英文标题】:WPF XAML Changing Image opacity on IsEnabled state 【发布时间】:2011-06-01 17:12:51 【问题描述】:当 IsEnabled 为 false 时,我希望图像的不透明度为 0.50。我一直在查看多个示例,但仍然无法掌握如何使其发挥作用。
这是我的自定义控件的完整 XAML。任何帮助将不胜感激。
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="test.StopButtonControl"
x:Name="UserControl"
d:DesignWidth="85" d:DesignHeight="85">
<Grid x:Name="LayoutRoot">
<Image x:Name="StopButtonUI" Source="Images/stop.png" Stretch="Fill" MouseUp="StopButtonClick"/>
</Grid>
</UserControl>
【问题讨论】:
【参考方案1】:您可以通过样式触发器将Image
的Opacity
属性与其IsEnabled
属性耦合,如下所示:
<Grid x:Name="LayoutRoot">
<Image x:Name="StopButtonUI" Source="Images/stop.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>
</Grid>
当IsEnabled
为假时,这会将Opacity
设置为0.5。
Image
的IsEnabled
属性将在UserControl
的IsEnabled
属性因属性继承而发生变化时触发,即图像是用户控件的子控件,因此它将具有其@ 987654331@属性也设置了。
【讨论】:
非常感谢,现在我明白了,我将尝试其他属性。以上是关于WPF XAML 在 IsEnabled 状态下更改图像不透明度的主要内容,如果未能解决你的问题,请参考以下文章
WPF 条件绑定。 Button.IsEnabled 到 SelectedIndex >= 0
WPF 网格与孩子。如何将子 IsEnabled 绑定到父行
如何使用 XAML 在 Panel 或 GroupBox 等整个容器上设置 IsReadOnly / IsEnabled?