如何在WPF中动态更改悬停在代码后面的图像我从db读取图像并读取悬停图像如何为图像源和悬停源编写代码?
问问题
1564 次
1 回答
5
您可以在代码中使用事件和更改MouseEnter
,但为什么不使用更改when is 。就像这样,当鼠标离开您的控件时,您不必处理状态,因为它只会重新评估您的样式并恢复到以前的图像源。
触发示例:MouseLeave
Image.Source
Triggers
Image.Source
IsMouseOver
true
<ContentControl>
<ContentControl.Resources>
<BitmapImage UriSource="ad.png" x:Key="ImgBtnLightbulbOff"/>
<BitmapImage UriSource="ae.png" x:Key="ImgBtnLightbulbOn"/>
</ContentControl.Resources>
<ContentControl.Template>
<ControlTemplate TargetType="{x:Type ContentControl}">
<Image Source="{StaticResource ImgBtnLightbulbOff}" x:Name="PART_Image"/>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="PART_Image" Property="Source" Value="{StaticResource ImgBtnLightbulbOn}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</ContentControl.Template>
</ContentControl>
Image
必须包裹在其他一些控件中,因为触发器不会单独IsMouseOver
更改Source
。Image
我使用Resource
图像,但它们可以从任何地方获取,例如数据绑定。
但是,如果您仍然需要在后面的代码中执行此操作,请参考以下示例:
XAML
<Image Source="{StaticResource ImgBtnLightbulbOff}"
MouseEnter="Image_MouseEnter"
MouseLeave="Image_MouseLeave"/>
代码:
private void Image_MouseLeave(object sender, MouseEventArgs e)
{
var img = sender as Image;
img.Source = (ImageSource)img.FindResource("ImgBtnLightbulbOff");
}
private void Image_MouseEnter(object sender, MouseEventArgs e)
{
var img = sender as Image;
img.Source = (ImageSource)img.FindResource("ImgBtnLightbulbOn");
}
于 2013-05-25T12:17:06.160 回答