删除绑定后,Image.Source(带绑定)正在阻止图像文件

本文关键字:绑定 图像 文件 Image Source 删除 | 更新日期: 2023-09-27 18:36:37

GridView中,我已经模板化了这些项目,因此该模板中的 Image 控件使用绑定(也尝试使用 BitmapImage)接收 Uri 以显示图片文件。它可以工作,但我无法删除这些文件,因为这些文件被阻止了。 即使我清除了GridView.ItemsSource的集合,即使我打电话给GC.Collect(),它们仍然被阻止。

感谢菲利普的工作建议...当我使用转换器将 BitmapImage 馈送到每个 Image 控件时,发现必须做一些特定的事情才能使其工作,这里供将来参考:

InMemoryRandomAccessStream Ras = new InMemoryRandomAccessStream();
var archivo = CartoonsDownloader.FolderImagenes.GetFileAsync(TheFileName);
var fileStream = CartoonsDownloader.FolderImagenes.OpenStreamForReadAsync(TheFileName);
fileStream.Result.CopyTo(Ras.AsStreamForWrite());
BitmapImage MapaDeBits = new BitmapImage();
// Even it's RANDOM, I have to manually "Seek" it at 0.
Ras.Seek(0);
MapaDeBits.SetSource(Ras);
MapaDeBits.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
return MapaDeBits;

删除绑定后,Image.Source(带绑定)正在阻止图像文件

这可能是 XAML 堆栈中的一个错误(因此你可以在 MSDN 论坛上报告它),或者只是其缓存图像性质的副作用。作为替代方法 - 您可以自己打开文件并使用 SetSource 方法设置图像。然后,您应该更好地控制文件访问。