Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Cyril Sansus

WPF, Interfaces Utilisateurs et .NET
WP7 – La virtualisation d’interface

On entend beaucoup parler de virtualisation dans différents blogs sur Windows Phone 7 qui mélangent deux concepts de virtualisation : la virtualisation d’interface (UI Virtualization) et la virtualisation de donnée (Data Virtualisation).

Parce que ces deux notions sont importantes, on va commencer par parler de la virtualisation d’interface et de quelques trucs et astuces sur les VirtualizingStackPanel sur WP7.

Présentation

Le concept de virtualisation d’interface existe sur toutes les plateformes applicatives XAML : WPF, Silverlight et Silverlight For Windows Phone 7.

La virtualisation d’interface permet d’afficher une ListBox de plusieurs millions d’éléments instantanément et sans temps de chargement.

Le principe est simple : au lieu de créer des millions de ListBoxItem et des les binder, on va simplement créer ceux qui sont visibles. Ainsi pour une liste d’un million d’éléments, seuls une dizaine de ListBoxItem seront créés.

L’implémentation

Par défaut les ListBox sont virtualisées ou plus exactement elles utilisent un VirtualizingStackPanel qui s’occupe de virtualiser les ListBoxItem.

Il est possible de désactiver la virtualisation mais cela peut avoir de très lourdes conséquences sur les performances de votre application. Le code ci-dessous présente une solution qui consiste à remplacer la VirtualizatingStackPanel par défaut par un StackPanel :




    
    
        
             -->
                            
        
    

La plateforme WP7

Sur WP7, le VirtualizingStackPanel créé plus d’éléments que nécessaire afin de gérer les scrollings de l’utilisateur sans trop de problème.

Par exemple pour une liste qui affiche 10 éléments, le VirtualizingStackPanel créer 30 éléments. En moyenne il vous suffit de multiplier par trois le nombre d’éléments visibles pour avoir le nombre d’éléments créé.

A noter que les ListBoxItem sont recyclés automatiquement par le VirtualizingStackPanel ainsi une ListBox qui affiche un million d’éléments n’utilisera que 30 ListBoxItem.

Mais si votre ListBox est virtualisée et encore des problèmes de temps de chargement, la virtualisation de données sera peut être la solution (coming soon).

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: mercredi 13 octobre 2010 07:23 par Vko

Commentaires

Jem a dit :

Pas mal la virtualisation de code ;P

# octobre 13, 2010 09:36

JeremyJeanson a dit :

@jem Tu m'as pris de court. Je vois qu'on a le même humour...

# octobre 13, 2010 10:16

Vko a dit :

mouaip c'est l'étape après :)

Je corrige ça de suite.

# octobre 13, 2010 10:50

grogru a dit :

Intéressant le coup du x3 pour le nombre d'éléments je ne savais pas.

Par contre petite remarque car celà me pique les yeux, dans ta dernière phrase tu écris "malgré que" et dans l'absolu c'est mal :-P. Ici tu peux même les supprimer en remplaçant "soit" par "est" et ta phrase gardera tout son sens.

# octobre 15, 2010 08:49
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Azure Days le 24 avril ! par Blog de Jérémy Jeanson le 04-08-2018, 17:51

- Office 365: Ajouter ou retirer des comptes utilisateurs des administrateurs de collections de site via PowerShell par Blog Technique de Romelard Fabrice le 02-19-2018, 18:18

- Office 365: Extraire dans un fichier CSV une liste de tous les Teamsites présents dans votre tenant Office 365 par Blog Technique de Romelard Fabrice le 02-19-2018, 15:39

- SharePoint 2007: Forcer le Check-In des fichiers avant la migration vers SharePoint Online par Blog Technique de Romelard Fabrice le 02-19-2018, 15:13

- Office 365: Comment configurer l’ouverture des fichiers stockés dans une Document Library par Blog Technique de Romelard Fabrice le 02-19-2018, 14:25

- Microsoft Flow - Boite Mail partagée - Bibliothèque SharePoint par Le Blog (Vert) d'Arnaud JUND le 01-12-2018, 09:05

- Office 365: Nettoyage des versions de List Item avant migration depuis SharePoint On Premise vers SharePoint Online par Blog Technique de Romelard Fabrice le 08-08-2017, 15:36

- Office 365: Comment supprimer des éléments de liste SharePoint Online via PowerShell par Blog Technique de Romelard Fabrice le 07-26-2017, 17:09

- Nouveau blog http://bugshunter.net par Blog de Jérémy Jeanson le 07-01-2017, 16:56

- Office 365: Script PowerShell pour assigner des droits Full Control à un groupe défini par Blog Technique de Romelard Fabrice le 04-30-2017, 09:22