我有一个.jpg文件,该文件已绑定到图像元素,如下所示:
<Image Source="{Binding FileName}"/>
我允许用户删除包含所有内容的文件夹,并且该内容包括该图像。当他们删除图像时,随着列表视图的更新,图像将从界面中删除。该对象可以很好地删除内存中的内容,但是由于该映像已在使用中,因此由于访问冲突而无法删除硬盘驱动器上的资产。我尝试通过将值设置为null来破坏此图像的绑定,然后将其删除,但是仍然会违反:
selectedLayout.FileName = null;
var dir = new DirectoryInfo("c:\\myFolder");
dir.Delete(true); // true tells it to delete recursivly
所以我的问题是,如何从xaml页面的FileName属性中“解除绑定” .jpg文件,以便可以从硬盘驱动器中删除该文件并消除此访问异常?
答案 0 :(得分:2)
您可以绑定到string
为BitmapImage
的{{1}},而不是绑定到CacheOption
。
将BitmapCacheOption.OnLoad
来源属性的类型更改为FileName
并进行如下设置:
BitmapImage
然后您应该能够在继续运行应用程序的同时删除BitmapImage image = new BitmapImage();
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad;
image.UriSource = new Uri(@"D:\pic.png");
image.EndInit();
FileName = image;
。