WPF XAML Изменение непрозрачности изображения в состоянии IsEnabled - PullRequest
4 голосов
/ 30 декабря 2010

Я хотел бы, чтобы изображение имело непрозрачность 0,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>

1 Ответ

18 голосов
/ 30 декабря 2010

Вы можете связать свойство 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 ложно.

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

...