locked
Autoscroll une listbox uniquement si elle est déjà scroll au maximum RRS feed

  • Question

  • Bonjour,

    Je viens vers vous aujourd'hui car j'ai un problème pour le développement d'une application ayant un module de chat.

    Je voudrait lorsque l'utilisateur se trouve sur la page de chat que lorsqu'un nouveau message est posté, la listbox "autoscroll" vers le bas pour afficher celui-ci (j'ai déjà réalisé cette partie).

    Mais je voudrais que l'application n'ai ce comportement que si l'utilisateur est actuellement scroll au maximum de la listbox en question. En effet si il est entrain de relire des messages précédents il ne faut pas qu'il soit rammené automatiquement vers le dernier posté.

    Je ne suis pas sur que ça soit très clair comme explication ... si vous avez besoin de plus de précisions n'hésitez pas.

    Merci d'avance pour votre aide,

    YoannV.

    mardi 28 février 2012 16:29

Réponses

  • Bonjour,

    Pour faire au plus simple, tu peux comparer l'offset du ScrollViewer intégré à ta ListBox avec la propriété ScrollableHeight comme dans l'exemple ci-dessous:

                ScrollViewer viewer = ((VisualTreeHelper.GetChild(listBox1, 0) as FrameworkElement).FindName("ScrollViewer"as ScrollViewer);
     
                if (viewer.ScrollableHeight.Equals(viewer.VerticalOffset))
                {
                    // At end of scroll...
                }

    Pour que la discussion puisse être identifiée comme résolue merci de marquer les réponses qui vous ont aidées à solutionner votre problème comme "réponse".

    • Marqué comme réponse Yoannv mercredi 29 février 2012 12:28
    mardi 28 février 2012 19:07

Toutes les réponses

  • Bonjour,

    Pour faire au plus simple, tu peux comparer l'offset du ScrollViewer intégré à ta ListBox avec la propriété ScrollableHeight comme dans l'exemple ci-dessous:

                ScrollViewer viewer = ((VisualTreeHelper.GetChild(listBox1, 0) as FrameworkElement).FindName("ScrollViewer"as ScrollViewer);
     
                if (viewer.ScrollableHeight.Equals(viewer.VerticalOffset))
                {
                    // At end of scroll...
                }

    Pour que la discussion puisse être identifiée comme résolue merci de marquer les réponses qui vous ont aidées à solutionner votre problème comme "réponse".

    • Marqué comme réponse Yoannv mercredi 29 février 2012 12:28
    mardi 28 février 2012 19:07
  • Effectivement cela résoud mon problème, Merci beaucoup.
    mercredi 29 février 2012 12:28