在我看来,我有几个ToggleButtons。它们中的每一个都有一个具有不同源的Image作为其内容,并且其IsChecked属性绑定到我的视图模型中的属性。我想为每个按钮的Image添加/删除DropShadowEffect,具体取决于它的按钮是否为IsChecked。我可以在MyProperty1,MyProperty2等上使用DataTrigger为每个Image赋予自己的风格,但是我也可以为所有图像使用单一样式吗?
<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>
答案 0 :(得分:1)
您可以为Image
创建共同样式,并在DataTrigger
属性上使用ToggleButton.IsChecked
<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>