locked
Nombre d'éléments affichés initialement dans une Listbox virtualisée RRS feed

  • Question

  • Bonjour,

    pour un besoin assez spécifique, je dois limiter fortement l'affichage d'éléments dans une listbox (chaque affichage d'élément est assez coûteux). J'ai donc utilisé une listbox virtualisée, mais le système cherche dès le départ à afficher un nombre significatif d'éléments : la méthode object this[int index] est appellée 13 fois, je souhaiterais descendre à 7 ou 8 (pour 5 éléments affichés)

    Existe il un moyen de modifier ce paramètre ?

    Merci,

    Fred

    lundi 4 juin 2012 17:08

Réponses

  • Ne touche à rien, la listbox est déjà virtualisé.

    Je comprends très bien ta problématique, ce que tu peux faire, c'est utiliser ce que l'on appelle une pumplist, cad que tu ajoutes tes éléments au fur et à mesure et non d'un coup. 

    Utilises donc une ObservableCollection que tu bindes à ta listbox et ajoute tes éléments au fur et a mesure avec un timer, ca devrait soulager ton UI

    http://www.catuhe.com/post/Ameliorer-le-feedback-visuel-de28099une-ListBox-sur-Windows-Phone-7.aspx


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue

    • Marqué comme réponse nijiwp mardi 5 juin 2012 10:25
    mardi 5 juin 2012 10:13

Toutes les réponses

  • Salut Tchakeur,

    As-tu un ScrollViewer attaché à cette liste?

    Cordialement,

    mardi 5 juin 2012 08:33
  • Pas explicitement dans mon xaml, mais je crois savoir qu'il y en a un "dans" toute listbox
    mardi 5 juin 2012 08:58
  • Pas explicitement dans mon xaml, mais je crois savoir qu'il y en a un "dans" toute listbox

    Comment ça tu crois? Lol :P

    Dans ce post, ils en parlent, et disent explicitement, qu'il te faut un ScrollViewer attaché à ta liste pour que la virtualisation fonctionne.

    Cordialement,

    Mafyou.

    mardi 5 juin 2012 09:05
  • Je dis je crois, car je ne suis pas expert en Silverlight.

    Par contre je ne comprends pas ta réponse : dans ton article, il est écrit : "I had the same problem, and removing the wrapping ScrollViewer (and adding ScrollViewer.HorizontalScrollBarVisibility="Auto") fixed it for me"

    Il y a t'il quelque chose qui m'échappe?

    mardi 5 juin 2012 09:24
  • En français, et plus explicitement, cela donne:

    Mettez un attribut ScrollViewer.HorizontalScrollBarVisibility="Auto" à votre liste et, enlevez le composant "ScrollViewer" qui englobe votre liste.

    Cordialement,

    Mafyou.

    mardi 5 juin 2012 09:36
  • Dans ta deuxième réponse, tu écris :

    "il te faut un ScrollViewer attaché à ta liste pour que la virtualisation fonctionne"

    Dans la dernière, tu écris :

    enlevez le composant "ScrollViewer" qui englobe votre liste

    Euh... C'est moi qui fatigue ce matin, ou quelque chose n'est pas cohérent dans tout ça.

    De toute façon on s'égare, ce n'est pas mon problème : la virtualisation fonctionne très bien, c'est juste que le nombre d'éléments initialement demandé par le système est trop grand à mon goût, et que je souhaite le customiser, si possible.

    C'est d'ailleurs l'intitulé de mon post...

    mardi 5 juin 2012 10:00
  • Ne touche à rien, la listbox est déjà virtualisé.

    Je comprends très bien ta problématique, ce que tu peux faire, c'est utiliser ce que l'on appelle une pumplist, cad que tu ajoutes tes éléments au fur et à mesure et non d'un coup. 

    Utilises donc une ObservableCollection que tu bindes à ta listbox et ajoute tes éléments au fur et a mesure avec un timer, ca devrait soulager ton UI

    http://www.catuhe.com/post/Ameliorer-le-feedback-visuel-de28099une-ListBox-sur-Windows-Phone-7.aspx


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue

    • Marqué comme réponse nijiwp mardi 5 juin 2012 10:25
    mardi 5 juin 2012 10:13
  • Merci, je vais envisager cette solution !
    mardi 5 juin 2012 10:24