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

- Office 365: Modifier les jeux de couleur dans les Thèmes des pages classiques de SharePoint Online par Blog Technique de Romelard Fabrice le 08-08-2018, 17:27

- Office 365: Modifier les jeux de couleur dans les Thèmes des pages modernes de SharePoint Online par Blog Technique de Romelard Fabrice le 07-04-2018, 13:26

- Office 365: Script PowerShell pour fixer le Quota Warning de toutes les collections d’un tenant par Blog Technique de Romelard Fabrice le 07-03-2018, 14:16

- MVP Award 2018-2019 par Blog de Jérémy Jeanson le 07-02-2018, 20:39

- Reprise des articles de 2014 à aujourd’hui par Blog de Jérémy Jeanson le 06-20-2018, 13:00

- Office 365: Comment créer un sous-plan dans Office 365 Planner par Blog Technique de Romelard Fabrice le 06-14-2018, 17:19

- Office 365: Script PowerShell de création de sous-sites basés sur CSOM ou PnP par Blog Technique de Romelard Fabrice le 06-12-2018, 14:58

- Office 365: Comment exporter tous les comptes Azure Active Directory ayant une license via PowerShell par Blog Technique de Romelard Fabrice le 05-17-2018, 13:46

- PowerShell: Comment avoir le Country Name depuis un Country Code par Blog Technique de Romelard Fabrice le 05-17-2018, 13:20

- Office 365: Comment supprimer un compte externe d’un site SharePoint Online en mode Extranet par Blog Technique de Romelard Fabrice le 05-11-2018, 17:00