MVVM模式下如何实现WPF动态展示图片
发表于:2025-02-22 作者:千家信息网编辑
千家信息网最后更新 2025年02月22日,这篇文章将为大家详细讲解有关MVVM模式下如何实现WPF动态展示图片,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。MVVM模式下WPF动态展示图片,界面选择图标,复
千家信息网最后更新 2025年02月22日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安全错误
数据库的锁怎样保障安全
缓存数据库的双写一致
鬼泣手游多久开一次服务器
怎么看自己的原神是哪个服务器的
热门的网络安全零信任
泾县自动化软件开发服务销售厂
为什么数据库打开不了连接
dayz服务器红色和绿色是什么
数据库大量无效数据的处理对策
pe下管理xp服务器
数据库中 部门表的标识
北京 软件开发工程师
黑卡 修复影像数据库
网络安全自查表怎么填写
软件开发发展前景怎么写
华冠智能卡软件开发
手机telnet服务器怎么用
软件开发项目激励制度
网络技术与普适计算的联系
崇明区市场软件开发采购
北京服务器虚拟化安装云主机
联想服务器购买
行政文员还要会网络技术
金蝶标准版u盘更换服务器
摩纳哥软件开发
数据库是存在本地的吗
湖北会计软件开发公司
工业设施网络安全
热联集团软件开发工程
成品软件开发有源码吗
数据库监听器调用php