WPF 鼠标在图片Image上悬停时切换更改设置图片源Source

简介: // 无效的写法,图片不会被切换 ...
// 无效的写法,图片不会被切换

 <Image Margin="0,0,0,0"   Width="50" Height="50" Source="1.png"   >
            <Image.Resources>
                <Style TargetType="{x:Type Image}">
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True"> 
                            <Setter Property="Cursor" Value="Hand"/>
                            <Setter Property="Source" Value="2.png"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Image.Resources>
</Image>
//解决方案:


        <Image Margin="0,0,0,0"   Width="50" Height="50">
            <Image.Resources>
                <Style TargetType="{x:Type Image}">
                    <Setter Property="Source" Value="1.png"/>
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True"> 
                            <Setter Property="Cursor" Value="Hand"/>
                            <Setter Property="Source" Value="2.png"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Image.Resources>
        </Image>

 

<Window.Resources>
<local:SwitchSourceConverter x:Key="SwitchSourceConverter" />
</Window.Resources>

 <Image>
            <Image.Resources>
                <Style TargetType="{x:Type Image}">
                    <Setter Property="Source" Value="1.png" />
                    <Setter Property="Width" Value="100" />
                    <Setter Property="Height" Value="150" />
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Cursor" Value="Hand" />
                            <Setter Property="Width" Value="170" />
                            <Setter Property="Height" Value="200" />
                            <Setter Property="Source" Value="{Binding Converter={StaticResource SwitchSourceConverter}}" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Image.Resources>
        </Image>
  public class SwitchSourceConverter : IValueConverter
    {

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            //注意 图片不存在或者出错,会造成不停闪烁,因为鼠标一直在图片上,图片则不停的进行更改Source
      var path = "3.png";
            var  uri = new Uri(path, UriKind.RelativeOrAbsolute);
            //返回以下几种方式都可以
            //return new BitmapImage(uri);
            return path;
            return uri; 
            BitmapImage image = new BitmapImage();
            image.BeginInit();
            image.UriSource = new Uri(path, UriKind.RelativeOrAbsolute); 
            image.EndInit();
            return image;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

 

目录
相关文章
C#WPF 图片在显示时没有问题,但在运行时图片显示不出来的解决
选中项目,点击右上角的显示全部文件按钮,会将默认隐藏的文件显示出来,选中所需图片,右键,添加到项目,然后选择图片查看属性,生成操作选择resource。完毕。本人目前的解决方案。
445 41
C#WPF 图片在显示时没有问题,但在运行时图片显示不出来的解决
|
C#
WPF技术之Image控件
Image控件可以用于加载和显示各种图像格式,包括位图(Bitmap)、矢量图(Vector)、矢量文档(XPS)等。它可以加载本地文件系统中的图像,或者从网络上下载图像。
411 0
WPF中给TextBox/TextBlock设置提示文本
WPF中给TextBox/TextBlock设置提示文本
WPF中给TextBox/TextBlock设置提示文本
|
前端开发 C# Windows
WPF鼠标、键盘、拖拽事件、用行为封装事件
本文主要介绍了WPF中常用的鼠标事件、键盘事件以及注意事项,同时使用一个案例讲解了拓展事件。除此之外,本文还讲述如何用行为(Behavior)来封装事件。
WPF界面异常:未将对象引用设置到对象实例
WPF界面异常:未将对象引用设置到对象实例
WPF TreeView设置所有节点默认展开
WPF TreeView设置所有节点默认展开
|
Java C#
C# WPF Image Source 频繁切换导致垃圾回收不及时导致内存占用不断增加的问题
C# WPF Image Source 频繁切换导致垃圾回收不及时导致内存占用不断增加的问题
2455 0
|
C# 编译器 数据格式
WPF备忘录(7)WPF图片资源路径介绍
原文:WPF备忘录(7)WPF图片资源路径介绍 在项目中增加两张图片Content.jpg和Resource.jpg,分别将其生成操作属性设置为Content和Resource。     在界面中增加两个Image控件ImgContent和ImgResource,在XAML中分别设置Source路径为Content.jpg和Resource.jpg。
954 0
|
C# Windows
WPF备忘录(2)WPF获取和设置鼠标位置与progressbar的使用方法
原文:WPF备忘录(2)WPF获取和设置鼠标位置与progressbar的使用方法 一、WPF 中获取和设置鼠标位置   方法一:WPF方法   Point p = Mouse.GetPosition(e.
1049 0