第一种写法:
(1):定义样式
<Style x:Key="imgStyle" TargetType="Image"> : <!-- TargetType="Image":表示当前的样式作用到Image对象上-->
<Setter Property="Source" Value="{StaticResource ResourceKey=RedLamp_Inactive}"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Source" Value="{StaticResource ResourceKey=RedLamp_Active}"/>
</Trigger>
<DataTrigger Binding="{Binding Path=IsPendingAlarmChecked}" Value="True">
<Setter Property="Source" Value="{StaticResource ResourceKey=RedLamp_Active}"/>
</DataTrigger>
</Style.Triggers>
</Style>
2:引用样式
<Image x:Name="img_Red" Margin="20,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Center" Stretch="None" ToolTip="未处理" Style={ StaticResource ResourceKey=imgStyle}/>
第二种写法:
<Image x:Name="img_Red" Margin="20,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Center" Stretch="None" ToolTip="未处理" Cursor="Hand">
<Image.Style>
<Style TargetType="Image">
<Setter Property="Source" Value="{StaticResource ResourceKey=RedLamp_Inactive}"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Source" Value="{StaticResource ResourceKey=RedLamp_Active}"/>
</Trigger>
<DataTrigger Binding="{Binding Path=IsPendingAlarmChecked}" Value="True">
<Setter Property="Source" Value="{StaticResource ResourceKey=RedLamp_Active}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
说明如下:
Source的属性值应该为“ImageSource 或 ImageSource的派生子类的实例”
即Value = 应该为“ImageSource 或 ImageSource的派生子类的实例”
Value="{StaticResource ResourceKey=RedLamp_Active}":把由“RedLamp_Active”关键字所代表的“BitmapImage”实例赋值给Value
<Setter Property="Source" Value="{StaticResource ResourceKey=RedLamp_Active}"/>
Setter:设置器
Property:用来指定“某一个”属性
Value:用来设置“某个”属性的值
{StaticResource ResourceKey=RedLamp_Inactive} : 这个整体表示一个key是“RedLamp_Inactive”的静态资源,在这里,该静态资源是一个BitMapImage实例(该实例可能来自本页面的“Resources”,也可能来自外部的“资源字典”
StaticResource:静态资源只从资源集合中一次获取资源