Come abbiamo visto nello script #46, la classe StorageFolder espone alcuni metodi per recuperare, in modo asincrono, le informazioni su file presenti nelle folder di sistema. Quando il numero dei file si fa più esteso possiamo utilizzare la classe FileInformationFactory, del namespace Windows.Storage.BulkAccess, che può offrire maggiori prestazioni.
Grazie al metodo GetVirtualizedFilesVector, ad esempio, possiamo creare un vettore virtualizzato di oggetti IStorageInformation che espongono le informazioni sul file oltre allo stream di una thumbnail, senza la necessità di chiamare altri metodi per ciascun item.
var pictures = KnownFolders.CameraRoll; var queryOptions = new QueryOptions(CommonFileQuery.OrderByName, new List<string>()); var fileQuery = pictures.CreateFileQueryWithOptions(queryOptions); var factory = new FileInformationFactory(fileQuery, ThumbnailMode.PicturesView); var allPictures = factory.GetVirtualizedFilesVector(); ll1.ItemsSource = allPictures;
Il valore di ritorno di GetVirtualizedFilesVector può essere associato direttamente come ItemSource di un ItemsControl.
Per renderizzare l'immagine è sufficiente bindare la proprietà Thumbnail ad un Image nel DataTemplate, e creare un BitmapImage con il relativo stream.
La virtualizzazione che il metodo adotta internamente permette l'accesso alle informazioni sui file solo quando queste sono effettivamente richieste attraverso il binding.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Ottenere il contenuto di una cartella FTP con la libreria FluentFTP
Disabilitare automaticamente un workflow di GitHub
Utilizzare Tailwind CSS all'interno di React: installazione
Miglioramenti nelle performance di Angular 16
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Utilizzare HiLo per ottimizzare le insert in un database con Entity Framework
Creare form tipizzati con Angular
Eseguire attività con Azure Container Jobs
Utilizzare Tailwind CSS all'interno di React: primi componenti
Usare una container image come runner di GitHub Actions
Gestire domini wildcard in Azure Container Apps
Creare gruppi di client per Event Grid MQTT