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
Usare le collection expression per inizializzare una lista di oggetti in C#
Paginare i risultati con QuickGrid in Blazor
Semplificare il deployment di siti statici con Azure Static Web App
Usare lo spread operator con i collection initializer in C#
Implementare l'infinite scroll con QuickGrid in Blazor Server
Recuperare un elemento inserito nella cache del browser tramite API JavaScript
C# 12: Cosa c'è di nuovo e interessante
Routing statico e PreRendering in una Blazor Web App
Applicare il versioning ai nostri endpoint ASP.NET Core Minimal API
Gestire i null nelle reactive form tipizzate di Angular
Utilizzare il trigger SQL con le Azure Function
Utilizzare domini personalizzati gestiti automaticamente con Azure Container Apps
I più letti di oggi
- Miglioramenti nelle performance di Angular 16
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- HTML5 con CSS e JavaScript
- Ottimizzazione dei block template in Angular 17
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!