MVVM模式下WPF如何动态绑定展示图片
发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,这篇文章主要为大家展示了"MVVM模式下WPF如何动态绑定展示图片",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"MVVM模式下WPF如何动态绑定展示图片"
千家信息网最后更新 2024年09月21日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安全错误
数据库的锁怎样保障安全
表格中怎么输入重复数据库
查看是否有代理服务器
数据库在线编辑
郴州市电脑软件开发工作招聘
关系数据库设计基础理论
芜湖安卓软件开发多少钱
网络安全手抄报幼儿园漂亮简单
赤峰学院巴林格斯尔数据库建设
软件开发 链
游戏服务器多大够用
信息管理数据库技术课程设计
档案管理系统数据库
数据库主菜单窗体的设计
大禹网络科技公司算互联网公司吗
江苏工业软件开发如何收费
网络安全用韩语怎么说
电脑做服务器怎么连接网络
网络安全服务企业论文
天马网络安全手抄报
甲方用乙方数据库
戴尔服务器真伪查询
福彩的服务器
网吧计算机网络安全员
finder连接服务器
阿帕网络技术公司
数据库回收站实例
盛世佳缘网络技术有限公司
湖南项目软件开发排行榜
网络安全党支部工作责任制
excel数据库入门教学