ピクチャライブラリのカスタムフォルダからアプリケーションのListViewに画像を表示できます。しかし、そのカスタムフォルダに3つ以上のイメージがある場合、メモリ不足例外が発生するか、アプリケーションがクラッシュし、Visual Studioはアプリケーションがクラッシュしたことを認識しません。私の質問は、どうやってこの仕事をすることができるのですか?ここでListViewに画像を埋め込む際にメモリ不足が発生する(Windows Phone 8.1)
は私のコードです... xaml.csファイルで
:ここ
List<StorageFile> FileList = (await temp.GetFilesAsync()).ToList();
List<ImageItem> ImageList = new List<ImageItem>();
for (int i = 0; i < FileList.Count; i++)
{
using (IRandomAccessStream FileStream = await FileList[i].OpenAsync(FileAccessMode.Read))
{
using(StorageItemThumbnail thumbnail = await file.GetThumbnailAsync(ThumbnailMode.PicturesView))
{
if (thumbnail != null && thumbnail.Type == ThumbnailType.Image)
{
BitmapImage bitmap = new BitmapImage();
await bitmap.SetSourceAsync(FileStream);
ImageList.Add(new ImageItem() { ImageData = bitmap });
}
}
}
}
this.PhotoListView.DataContext = ImageList;
は私ヘルパークラスである:ここでは
public class ImageItem
{
public BitmapImage ImageData { get; set; }
}
は私ですxaml ListViewコード:
<ListView Grid.Column="1"
Grid.Row="0"
x:Name="PhotoListView"
Grid.RowSpan="1"
ItemsSource="{Binding}">
<ListView.ItemTemplate>
<DataTemplate>
<Image Source="{Binding ImageData}"
Margin="10"/>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
ありがとうございます!これは私の問題を解決します。私は物事を複雑にするだけかもしれないと思うので、私は自分のコードを編集して、今は完全に動作します。 –