如何设置图像';s通过触发器对其父对象的影响';s IsChecked属性

本文关键字:对象 属性 IsChecked 影响 触发器 图像 何设置 设置 | 更新日期: 2023-09-27 17:59:42

在我的视图中,我有几个ToggleButton。它们中的每一个都有一个以不同源作为内容的Image,并且它的IsChecked属性绑定到我的视图模型中的一个属性。我想在每个按钮的图像中添加/删除DropShadowEffect,这取决于它的按钮是否选中。我可以为每个图像指定自己的样式,在MyProperty1、MyProperty2等上使用DataTrigger,但我也可以为所有图像指定一个样式吗?

<ToggleButton IsChecked="{Binding MyProperty1}" >
    <Image Source="{Binding MyIcon1}">
        <Image.Effect>
            <DropShadowEffect Direction="-45" ShadowDepth="3" />
        </Image.Effect>
    </Image>
</ToggleButton>
<ToggleButton IsChecked="{Binding MyProperty2}" >
    <Image Source="{Binding MyIcon2}">
        <Image.Effect>
            <DropShadowEffect Direction="-45" ShadowDepth="3" />
        </Image.Effect>
    </Image>
</ToggleButton>

如何设置图像';s通过触发器对其父对象的影响';s IsChecked属性

您可以为Image创建通用样式,并在ToggleButton.IsChecked属性上使用DataTrigger

<Window.Resources>
    <Style TargetType="{x:Type Image}" x:Key="imageButtonStyle">
        <Setter Property="Effect">
            <Setter.Value>
                <DropShadowEffect Direction="-45" ShadowDepth="3" />
            </Setter.Value>
        </Setter>
        <Style.Triggers>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type ToggleButton}}, Path=IsChecked}" Value="True">
                <Setter Property="Effect" Value="{x:Null}"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Window.Resources>
<ToggleButton IsChecked="{Binding MyProperty2}" >
    <Image Source="{Binding MyIcon2}" Style="{StaticResource imageButtonStyle}"/>
</ToggleButton>