décembre
2010
Silverlight a d’excellentes fonctions de virtualisation d’interface. Vous pouvez avoir des milliers d’éléments dans un ItemsControl, et si vous utilisez un VirtualizingStackPanel l’interface restera réactive.
Cependant, si l’éléments que vous souhaitez afficher d’un service web, vous ne voulez peut être pas les télécharger tous en même temps, et la virtualisation d’interface ne vous aidera pas.
Ce dont vous avez besoin est de virtualisation des données, et c’est quelque chose que Silverlight ne fournit pas. Dans ce post, je vais être expliquer comment cela peut être réalisé.
En WPF, la virtualisation des données est relativement facile (ou du moins bien connu).
En bref, vous créez une IList, et chaque fois que l’indexeur de la collection est appelé, vous lancez le chargement des éléments. La collection lève des notifications de changement, l’interface utilisateur est mis à jour, et tout le monde est heureux.
En Silverlight, l’indexeur sera appelé pour chaques éléments de votre collection dès qu’elle sera liée à un ItemsControl, et donc tous les éléments seront téléchargés.
Il n’est pas possible de contourner cette restriction, mais nous pouvons minimiser ses effets avec un peu de ruse.
La virtualisation d’UI fait à peu près ce que nous voulons.
Elle ne crée les objets d’interface que s’ils sont visibles. L’astuce consiste à ne télécharger que les éléments liés à un objet d’interface.
Le lien fonctionne, je viens de le tester.
Peut-être un problème temporaire.
Sauf erreur de ma part, le lien sur l’article ne fonctionne pas…