如何打破绑定,以便您可以删除资产

时间:2019-02-28 14:56:46

标签: c# wpf xaml io

我有一个.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文件,以便可以从硬盘驱动器中删除该文件并消除此访问异常?

1 个答案:

答案 0 :(得分:2)

您可以绑定到stringBitmapImage的{​​{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;