Les écrans de nos smartphones n’arrêtent pas de grandir, cela dit, il faut tout de même utiliser le peu d’espace disponible avec précaution. Dans une de mes applications, j’ai une page contenant une Grid et une ListView. La Grid contenant des informations complémentaires à ce qui est affiché dans la ListView. L’idée est de cacher ou réduire la taille de la Grid pour laisser plus de place à ListView. Pour cela, il me faut détecter lorsque l’utilisateur scrolle vers le bas ou vers le haut pour cacher ou afficher cette Grid.
Dans un premier temps, il faut récupérer le ScrollViewer de notre ListView/GridView, dans l’event Loaded (pour s’assurer que le composant est bien chargé).
Avec le WinRTXamlToolkit (et son Helper que vous pouvez récupérer sur Internet), c’est très simple à faire.
Il s’agit ici de s’abonner à l’évènement ViewChanging qui comme son nom l’indique, est fired lorsque la scrollviewer voit sa vue évoluer. Rien de bien compliqué:
C’est dans ScrollViewerOnViewChanging que nous allons calculer si l’utilisateur va vers le haut ou vers le bas, avec une certaine sensibilité que vous pourrez modifier.
Je n’ai pas tout détaillé ici, mais j’ai opté personnellement pour un contrôle WinRT réutilisable à souhait dans mes/vos applications. Il est dispo sur GitHub: https://github.com/TinaNigro/ScrollWatchedSelector C’est en licence MIT, blablabla, libre a vous de me le piquer et en faire ce que vous voulez, et faire des pull requests sur ce repo.
Du coup, tout ce que vous avez à faire, c’est de changer votre ListView par
Et de vous abonner a l’event GoingToTopOrBottom.
Vous pourrez ensuite faire quelque chose du genre: