触发内部属性
<Button BorderBrush="Black" BorderThickness="2" x:Name="TimeButton" ClickMode="Press" Click="SetTime_Click" Height="26" HorizontalAlignment="Left" Margin="15, 0, 0, 0" Style="{StaticResource ImageButtonStyle}" ToolTip="Set Time" Width="26">
<Button.Background>
<ImageBrush x:Name="TimeImageBrush" ImageSource="/YCS;component/Images/Clock.png" Stretch="Uniform" TileMode="None" />
</Button.Background>
</Button>
我需要创建一个触发器,将Button.Background属性中的ImageBrush根据名为HasHours的布尔值设置为不同的,我可以从我的itemssource轻松绑定,任何人都知道如何实现这一点,我找不到链接到此属性的任何示例....
我试过这样的事情
<Button.Triggers>
<DataTrigger Binding="{Binding HasHours}" Value="false">
<Setter TargetName="TimeImageBrush" Property="ImageSource" Value="/YCS;component/Images/ClockRed.png"/>
</DataTrigger>
</Button.Triggers>
但它给了我这个错误:
在“ContentPresenter”类型上找不到静态成员“ImageSourceProperty”。
非常感谢任何帮助
答案 0 :(得分:1)
这可能不是你问题的答案。
首先,我猜你将无法向Triggers集合添加DataTrigger,因为它只支持EventTriggers。
但是,您可以在Button的样式中定义DataTrigger。在这里,不要设置ImageBrush的ImageSource属性,只需将新的ImageBrush设置为Background。
<Button ...>
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding HasHours}" Value="False">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="/YCS;component/Images/ClockRed.png"/>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
答案 1 :(得分:0)
将DataTrigger放在图像的触发器中,而不是按钮的触发器中。
您将不得不寻找触发器的DataContext:
如下所示:
<Button ... >
<Image ... >
<Image.Triggers>
<DataTrigger
Binding="{Binding Path= HasHours, RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type Button}}}"
Value="false" >
<Setter Property="ImageSource" Value="/YCS;component/Images/ClockRed.png"/>
</DataTrigger>
</Image.Triggers>
</Image>
</Button>