如何设置图像';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>
您可以为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>