// 分组文件夹 private async void btnFolderGroup_Click(object sender, RoutedEventArgs e) { lblMsg.Text = ""; StorageFolder picturesFolder = await KnownFolders.GetFolderForUserAsync(null, KnownFolderId.PicturesLibrary); // 文件夹按月分组查询参数,其他多种分组方式请参见 CommonFolderQuery 枚举 CommonFolderQuery folderQuery = CommonFolderQuery.GroupByMonth; // 判断一下 picturesFolder 是否支持指定的查询参数 if (picturesFolder.IsCommonFolderQuerySupported(folderQuery)) { // 创建查询 StorageFolderQueryResult queryResult = picturesFolder.CreateFolderQuery(folderQuery); // 执行查询 IReadOnlyList <StorageFolder> folderList = await queryResult.GetFoldersAsync(); foreach (StorageFolder storageFolder in folderList) // 这里的 storageFolder 就是按月份分组后的月份文件夹(当然,物理上并没有月份文件夹) { IReadOnlyList <StorageFile> fileList = await storageFolder.GetFilesAsync(); lblMsg.Text += storageFolder.Name + " (" + fileList.Count + ")"; lblMsg.Text += Environment.NewLine; foreach (StorageFile file in fileList) // 月份文件夹内的文件 { lblMsg.Text += " " + file.Name; lblMsg.Text += Environment.NewLine; } } } }
public override bool IsCommonFolderQuerySupported(CommonFolderQuery query) => false;
public override IAsyncOperation <IReadOnlyList <BaseStorageFolder> > GetFoldersAsync(CommonFolderQuery query) { return(AsyncInfo.Run <IReadOnlyList <BaseStorageFolder> >(async(cancellationToken) => { return await GetFoldersAsync(); })); }
public override IAsyncOperation <IReadOnlyList <BaseStorageFolder> > GetFoldersAsync(CommonFolderQuery query, uint startIndex, uint maxItemsToRetrieve) { return(AsyncInfo.Run <IReadOnlyList <BaseStorageFolder> >(async(cancellationToken) => { var items = await GetFoldersAsync(); return items.Skip((int)startIndex).Take((int)maxItemsToRetrieve).ToList(); })); }
public override StorageFolderQueryResult CreateFolderQuery(CommonFolderQuery query) => throw new NotSupportedException();
private async void GetThumbnailButton_Click(object sender, RoutedEventArgs e) { rootPage.ResetOutput(ThumbnailImage, OutputTextBlock, OutputDetails); // Pick a folder FolderPicker folderPicker = new FolderPicker(); foreach (string extension in FileExtensions.Image) { folderPicker.FileTypeFilter.Add(extension); } StorageFolder folder = await folderPicker.PickSingleFolderAsync(); if (folder != null) { const CommonFolderQuery monthShape = CommonFolderQuery.GroupByMonth; // Verify queries are supported because they are not supported in all picked locations. if (folder.IsCommonFolderQuerySupported(monthShape)) { // Convert folder to file group and query for items IReadOnlyList <StorageFolder> months = await folder.CreateFolderQuery(monthShape).GetFoldersAsync(); if (months != null && months.Count > 0) { const ThumbnailMode thumbnailMode = ThumbnailMode.PicturesView; const uint size = 200; StorageFolder firstMonth = months[0]; using (StorageItemThumbnail thumbnail = await firstMonth.GetThumbnailAsync(thumbnailMode, size)) { if (thumbnail != null) { MainPage.DisplayResult(ThumbnailImage, OutputTextBlock, thumbnailMode.ToString(), size, firstMonth, thumbnail, true); // Also display the hierarchy of the file group to better visualize where the thumbnail comes from IReadOnlyList <StorageFile> files = await firstMonth.GetFilesAsync(); if (files != null) { StringBuilder output = new StringBuilder("\nList of files in this group:\n\n"); foreach (StorageFile file in files) { output.AppendFormat("{0}\n", file.Name); } OutputDetails.Text = output.ToString(); } } else { rootPage.NotifyUser(Errors.NoImages, NotifyType.StatusMessage); } } } else { rootPage.NotifyUser(Errors.FileGroupEmpty, NotifyType.StatusMessage); } } else { rootPage.NotifyUser(Errors.FileGroupLocation, NotifyType.StatusMessage); } } else { rootPage.NotifyUser(Errors.Cancel, NotifyType.StatusMessage); } }
IAsyncOperation <IReadOnlyList <StorageFolder> > IStorageFolderQueryOperations.GetFoldersAsync(CommonFolderQuery query) { return(AsyncInfo.Run <IReadOnlyList <StorageFolder> >(async(cancellationToken) => { return await Task.WhenAll((await GetFoldersAsync(query)).Select(x => x.ToStorageFolderAsync().AsTask())); })); }
IAsyncOperation <IReadOnlyList <StorageFolder> > IStorageFolderQueryOperations.GetFoldersAsync(CommonFolderQuery query, uint startIndex, uint maxItemsToRetrieve) { return(AsyncInfo.Run <IReadOnlyList <StorageFolder> >(async(cancellationToken) => { return await Task.WhenAll((await GetFoldersAsync(query, startIndex, maxItemsToRetrieve)).Select(x => x.ToStorageFolderAsync().AsTask())); })); }
public abstract bool IsCommonFolderQuerySupported(CommonFolderQuery query);
public abstract IAsyncOperation <IReadOnlyList <BaseStorageFolder> > GetFoldersAsync(CommonFolderQuery query);
public abstract IAsyncOperation <IReadOnlyList <BaseStorageFolder> > GetFoldersAsync(CommonFolderQuery query, uint startIndex, uint maxItemsToRetrieve);
public abstract StorageFolderQueryResult CreateFolderQuery(CommonFolderQuery query);
public override bool IsCommonFolderQuerySupported(CommonFolderQuery query) { return(Folder.IsCommonFolderQuerySupported(query)); }
public override IAsyncOperation <IReadOnlyList <BaseStorageFolder> > GetFoldersAsync(CommonFolderQuery query) { return(AsyncInfo.Run <IReadOnlyList <BaseStorageFolder> >(async(cancellationToken) => { var items = await Folder.GetFoldersAsync(query); return items.Select(x => new SystemStorageFolder(x)).ToList(); })); }
public override StorageFolderQueryResult CreateFolderQuery(CommonFolderQuery query) { return(Folder.CreateFolderQuery(query)); }