Question

En fait ce que je veux faire est de permettre à un utilisateur de saisir une valeur de chaîne et d'avoir la liste de défilement à l'élément qui correspond au texte qu'ils ont tapé (ou le premier match ETC.).

Si j'utilise la méthode .ScrollIntoView (), le problème est qu'il met l'élément au Teh bas de la zone visible si l'élément est plus bas dans la liste que la position actuelle du défilement, et il est au sommet si il est plus élevé dans la liste que la position actuelle du défilement. Je veux le rendre cohérent en faisant le point haut dans la liste (à moins bien sûr qu'il ne peut pas être en raison d'être l'un des derniers « page » d'objets).

J'ai essayé de truquer en sélectionnant l'élément qui est x plus bas dans la liste où x est le nombre d'éléments visibles. Cela fonctionne en redescendant, mais des pauses quand remontant. et je suis incapable de déterminer quel indice est actuellement celui au sommet endroit visible dans ma liste.

zones de liste WinForms ont la propriété .TopIndex qui des exactement ce que je cherche, mais j'ai été incapable de trouver l'équivalent WPF. Tout le monde là-bas ont une idée comment y parvenir?

Merci d'avance!

Était-ce utile?

La solution

Utilisez ScrollIntoView deux fois, d'abord pour montrer le dernier élément de la liste, puis afficher l'article sélectionné. De cette façon, il sera toujours travailler de bas vers le haut. Vous aurez besoin d'appeler UpdateLayout après chaque appel pour vous assurer que les positions sont correctes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top