Renderizzare un grande numero di immagini presenti su file system nelle Windows Store app

di Alessio Leoncini, in WinRT 8.1,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi