我在尝试选择一个文件夹然后显示其中的所有图像时出现此错误。 我的代码:
var folderPicker = new Windows.Storage.Pickers.FolderPicker();
folderPicker.FileTypeFilter.Add(".jpg");
var folder = await folderPicker.PickSingleFolderAsync();
var filesList = await folder.GetFilesAsync();
for (int i = 0; i < filesList.Count ; i++)
{
using (var stream = await filesList[i].OpenAsync(Windows.Storage.FileAccessMode.Read))
{
var bitmapImage = new Windows.UI.Xaml.Media.Imaging.BitmapImage();
await bitmapImage.SetSourceAsync(stream);
Image m = new Image();
m.Source = bitmapImage;
sp1.Children.Add(m);
}
}
当文件夹有4或5张图像时,它确实有效,但不止于此我收到此错误。任何帮助?
答案 0 :(得分:1)
问题可能不在于您正在显示的图像数量,而在于您尝试显示的图像不是图像。
在代码的顶部,您只应用过滤器&#34; .jpg&#34;图像,但此过滤器仅适用于文件夹选择器对话框中显示的内容,而不适用于GetFilesAsync
方法返回的内容。这意味着您的filesList
包含文件夹中的所有文件,而不仅仅是图像。要解决此问题,您可以先使用CreateFileQueryWithOptions
方法创建过滤器:
var filesList =
await folder.CreateFileQueryWithOptions(
new QueryOptions( CommonFileQuery.DefaultQuery,
new string[] {".jpg"} )
).GetFilesAsync();
您可以尝试使用此解决方案on my GitHub查看我的示例应用。