WPF XAML Изменение непрозрачности изображения в состоянии IsEnabled

Я хотел бы, чтобы изображение имело непрозрачность .50, когда IsEnabled имеет значение false. Я просмотрел несколько примеров, но до сих пор не могу понять, как заставить его работать.

Вот полный 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>

person Nick    schedule 30.12.2010    source источник


Ответы (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>

Это установит Opacity на 0,5, когда IsEnabled ложно.

Свойство IsEnabled Image будет срабатывать, когда UserControl изменит свое свойство IsEnabled в результате наследования свойств, то есть изображение является дочерним элементом пользовательского элемента управления, поэтому для него также будет установлено свойство IsEnabled.

person Tim Lloyd    schedule 30.12.2010
comment
Большое спасибо, теперь я понял и поэкспериментирую с другими свойствами. - person Nick; 30.12.2010