【发布时间】:2016-03-23 12:25:51
【问题描述】:
因此,我可以将图片库中自定义文件夹中的图像显示到应用程序中的 ListView。但是,当该自定义文件夹有 3 个或更多图像时,要么发生内存不足异常,要么应用程序崩溃,Visual Studio 甚至没有意识到应用程序已经崩溃。我的问题是我怎样才能做到这一点?
这是我的代码...
在 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>
【问题讨论】:
标签: c# xaml windows-phone-8.1 out-of-memory