千家信息网

MVVM模式下WPF如何动态绑定展示图片

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"MVVM模式下WPF如何动态绑定展示图片",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"MVVM模式下WPF如何动态绑定展示图片"
千家信息网最后更新 2026年11月01日MVVM模式下WPF如何动态绑定展示图片

这篇文章主要为大家展示了"MVVM模式下WPF如何动态绑定展示图片",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"MVVM模式下WPF如何动态绑定展示图片"这篇文章吧。

MVVM模式下WPF动态展示图片,界面选择图标,复制到项目中固定目录下面,保存到数据库的是相对路径,再次读取的时候是根据数据库的相对路径去获取项目中绝对路径的图片展示。

首先在ViewModel中

//属性定义    BitmapImage _ImageSource;    ///     /// 显示的图标    ///     public BitmapImage ImageSource    {      get { return _ImageSource; }      set      {        _ImageSource = value;        NotifyOfPropertyChange("ImageSource");      }    }    string _ImagePath;    ///     /// 显示的图标路径    ///     public string ImagePath    {      get { return _ImagePath; }      set      {        _ImagePath = value;        NotifyOfPropertyChange("ImagePath");      }    }
//初始化数据//编辑的时候绑定数据public GroupInfoViewModel(sys_Right_Group groupInfo, OperType type)    {      if (type == OperType.Edit || type == OperType.Show)      {        IsAdd = false;        TitleName = "编辑分组";        RightGroup = groupInfo;        ImagePath = groupInfo.ImagePath;         GetImgData(groupInfo.ImagePath);      }    }    ///     /// 获取图片数据    ///     /// 相对路径    private void GetImgData(string imgPath)    {      if (string.IsNullOrEmpty(imgPath)) return;      try      {                string fileName = System.Environment.CurrentDirectory + imgPath; //获取文件的绝对路径        byte[] buf;        if (!PathToByte(fileName, out buf))        {          MessageHelper.ShowAutoCloseWarning("获取图标失败");          return;        }        ImageSource =ByteToImage(buf);      }      catch (Exception ex)      {        throw ex;      }    }
//界面选择图片按钮事件   ///     /// 修改图片    ///     public void ChangedIcon()    {      try      {        OpenFileDialog open = new OpenFileDialog();        open.Filter = string.Format("照片|*.jpg;*.jpeg;*.png;*.gif;*.bmp");        if (open.ShowDialog() == true)        {          var path = open.FileName;          //检查图标目录,绝对路径下面          string NewPath = System.Environment.CurrentDirectory + @"\Images\Tile\Group\";          string newFile = NewPath + Path.GetFileName(path);          if (!System.IO.Directory.Exists(NewPath))          {            System.IO.Directory.CreateDirectory(NewPath);          }          File.Copy(path, newFile, true); //复制文件到目录绝对路径文件夹          FileInfo info = new FileInfo(newFile); //新文件          if (info.Length > MenuViewModel.UserImageMaxLength)          {            MessageHelper.ShowAutoCloseWarning(string.Format("图标不能大于{0}M",              MenuViewModel.UserImageMaxLength / 1024 / 1024));            return;          }          byte[] buf;          if (!PathToByte(path, out buf))          {            MessageHelper.ShowAutoCloseWarning("修改失败");            return;          }          ImageSource = ByteToImage(buf);          ImagePath = @"\Images\Tile\Group\" + Path.GetFileName(path); //显示相对路径        }      }      catch (Exception ex)      {        throw ex;      }    }

点击保存的时候再把相对路径保存到数据库RightGroup.ImagePath = ImagePath;

//公共帮助方法//把图片文件转换为byte数组 public static bool PathToByte(string path, out byte[] buffer)    {      FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);      try      {        buffer = new byte[fs.Length];        fs.Read(buffer, 0, (int)fs.Length);        return true;      }      catch (Exception ex)      {        buffer = null;        return false;      }      finally      {        if (fs != null)        {          //关闭资源            fs.Close();        }      }          }//把byte数组转化为BitmapImage     public static BitmapImage ByteToImage(byte[] buf)    {      BitmapImage bmp = new BitmapImage();      bmp.BeginInit();      bmp.StreamSource = new MemoryStream(buf);      bmp.EndInit();      return bmp;    }

View 界面绑定代码:

                             

界面效果:

以上是"MVVM模式下WPF如何动态绑定展示图片"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

路径 图片 图标 数据 文件 动态 模式 界面 内容 数据库 时候 目录 篇文章 帮助 数组 项目 学习 选择 事件 代码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技企业 山东特亿宝互联网科技有限公司 互联网科技公司华为 迪茉互联网科技 广州互联网络科技有限公司 汇久创客互联网科技 互联网科技公司名称 丰台科技园 互联网公司 开启互联网科技时代小说 卫星互联网科技股票 央行互联网金融科技公司 宁夏众和广鑫互联网科技有限公司 彤创互联网科技有限公司 广西互联网科技孵化中心 长沙互联网科技 本届互联网大会上的黑科技 2021世界互联网领先科技成果发布 陕西九四连强互联网科技有限公司 安徽九吞吴互联网科技有限公司 宁波允成互联网科技有限公司 上海喔噻互联网科技有限公司 江苏根荣互联网科技 互联网科技有限公司经营范围 互联网未来科技 奔汉互联网科技 剑昆互联网络科技有限公司临桂 央行互联网金融科技公司 版纳互联网科技选哪家 互联网科技创新创业项目 恒生互联网科技趋势
0