当前位置:  开发笔记 > 编程语言 > 正文

删除绑定到控件的图像

如何解决《删除绑定到控件的图像》经验,为你挑选了1个好方法。

我正在编写一个Image Manager WPF应用程序.我有一个带有以下ItemsTemplate的ListBox:

        
            
                
                
            
            
                
            
            
                
                    
                        
                    
                    
                
            
        

请注意,"Image"控件绑定到"FullName"属性,该属性是表示JPG的绝对路径的字符串.

一些应用程序功能要求我更改JPG文件(移动,重命名或删除).当我尝试这样做(当前尝试移动文件)时,我收到一个IOException:"进程无法访问该文件,因为它正由另一个进程使用." 锁定文件的进程是我的WPF应用程序.

我做了一些在线搜索,发现了几个帖子,表明图片特别是放下他们的资源有困难.我尝试过以下方法:

    将ListBox.Source设置为null

    在尝试移动之前添加10秒的等待时间.

    发出GC.Collect().

    将操作移动到其他线程.

我还能尝试什么?我想在ItemsTemplate中找到对Image对象的引用并尝试处理Image,但我无法弄清楚如何获取引用.

我读到的一个可能的解决方案是创建图像的副本而不是实际的图像,但由于绑定是文件名而不是实际的图像我不知道我是否可以使这个工作.

任何帮助或建议将非常感激.



1> Kent Boogaar..:

我的Intuipic应用程序也允许用户删除图像.我不得不写这个转换器来实现它.相关代码:

//create new stream and create bitmap frame
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.StreamSource = new FileStream(path, FileMode.Open, FileAccess.Read);
bitmapImage.DecodePixelWidth = (int) _decodePixelWidth;
bitmapImage.DecodePixelHeight = (int) _decodePixelHeight;
//load the image now so we can immediately dispose of the stream
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.EndInit();

//clean up the stream to avoid file access exceptions when attempting to delete images
bitmapImage.StreamSource.Dispose();

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有