WPF XAML在IsEnabled状态下更改图像不透明度

时间:2010-12-30 19:13:33

标签: wpf xaml user-controls opacity isenabled

当IsEnabled为false时,我希望图像的不透明度为.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 个答案:

答案 0 :(得分:18)

您可以通过样式触发器将Image的{​​{1}}属性与其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> 为false时,这会将Opacity设置为0.5。

IsEnabled由于属性继承而更改Image属性时,IsEnabled的{​​{1}}属性将被触发,即图像是用户控件,因此它也会设置UserControl属性。