0

GridView、アイテムをテンプレート化したので、そのテンプレート内のImageコントロールは、画像ファイルを表示するためのバインディング(BitmapImageでも試行)を使用してURIを受け取ります。それは動作しますが、それらのファイルがブロックされているため、それらのファイルを削除できません。をフィードしているコレクションをクリアしてGridView.ItemsSourceも、電話をかけGC.Collect()てもブロックされます。

フィリップの実用的な提案に感謝します...コンバーターを使用して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;
4

1 に答える 1

0

これは、XAMLスタックのバグ(MSDNフォーラムで報告できます)、または画像のキャッシュの性質の単なる副作用である可能性があります。別の方法として、ファイルを自分で開き、SetSourceメソッドを使用して画像を設定することもできます。そうすれば、ファイルアクセスをより適切に制御できるはずです。

于 2012-06-10T15:16:21.080 に答える