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

时间:2012-06-09 22:32:45

标签: c# windows-runtime windows-store-apps winrt-xaml

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

感谢Philip的工作建议......因为我使用转换器将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;

1 个答案:

答案 0 :(得分:0)

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