Traitée Autoscroll une listbox uniquement si elle est déjà scroll au maximum

  • mardi 28 février 2012 16:29
     
     

    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.

Toutes les réponses

  • mardi 28 février 2012 19:07
     
     Traitée A du code

    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
    •  
  • mercredi 29 février 2012 12:28
     
     
    Effectivement cela résoud mon problème, Merci beaucoup.