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
Path addizionali per gli asset in ASP.NET Core MVC
Gestione file Javascript in Blazor con .NET 9
Aggiornare a .NET 9 su Azure App Service
Utilizzare Locust con Azure Load Testing
Generare un hash con SHA-3 in .NET
Referenziare un @layer più alto in CSS
Generare una User Delegation SAS in .NET per Azure Blob Storage
.NET Aspire per applicazioni distribuite
Fornire parametri ad un Web component HTML
Creare una libreria CSS universale: Cards
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Migliorare la sicurezza dei prompt con Azure AI Studio