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
ASP.NET Core & Blazor 6
Impostare le dimensioni di un oggetto tramite CSS
Certificati TLS gestiti con Azure API Management
Serializzare un enum come stringa con System.Text.Json
Creare velocemente microservice grazie a minimal API di ASP.NET Core 6
Taggare le query create con EF Core con informazioni di debug sul codice
Disegnare un'applicazione web sfruttando il micro-frontend pattern
Iniettare servizi in un hosted service di ASP.NET Core
Eseguire query in parallelo con Entity Framework Core and ASP.NET Core
Offline first con Blazor e IndexedDB
Modificare una variabile d'ambiente di un deployment di Kubernetes
Recuperare i dispositivi connessi in tethering con la Universal Windows Platform