C# 移除绑定后,源(带绑定)正在阻止图像文件

C# 移除绑定后,源(带绑定)正在阻止图像文件,c#,windows-runtime,windows-store-apps,winrt-xaml,C#,Windows Runtime,Windows Store Apps,Winrt Xaml,在GridView中,我对项目进行了模板化,以便模板中的图像控件使用绑定(也尝试使用BitmapImage)来显示图片文件来接收Uri。它可以工作,但我无法删除这些文件,因为这些文件已被阻止。即使我清除了提供GridView.ItemsSource的集合,即使我调用了GC.Collect(),它们仍然被阻止 感谢Philip的工作建议。。。当我使用转换器将BitmapImage提供给每个图像控件时,我发现需要做一些特殊的事情才能使其正常工作,以下是供将来参考的内容: InMemoryRandom

GridView
中,我对项目进行了模板化,以便模板中的图像控件使用绑定(也尝试使用BitmapImage)来显示图片文件来接收Uri。它可以工作,但我无法删除这些文件,因为这些文件已被阻止。即使我清除了提供
GridView.ItemsSource
的集合,即使我调用了
GC.Collect()
,它们仍然被阻止

感谢Philip的工作建议。。。当我使用转换器将BitmapImage提供给每个图像控件时,我发现需要做一些特殊的事情才能使其正常工作,以下是供将来参考的内容:

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;

这可能是XAML堆栈中的一个bug(因此您可以在MSDN上报告),也可能只是其缓存图像性质的一个副作用。另一种方法是,您可以自己打开文件并使用该方法设置图像。然后,您应该更好地控制文件访问。

出于好奇-如何设置Uri以从支持删除文件的位置获取图像-appdata:///local/My Cartons/Images/image.jpg,请查看这篇文章,了解Metro的uri语法的完整列表: