Autor Beitrag
Legolas
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 30.05.14 14:03 
Hallo allerseits! :)

Ich versuche momentan ein ListView automatisch so zu scrollen, dass der markierte Eintrag exakt in der Mitte angezeigt wird.
Ich hab grad nur leider keinen Schimmer, wie ich das anstellen kann.
Mein Ansatz wäre, einfach einen anderen Eintrag zu markieren, und dann wieder zurrück zu springen, aber wirklich elegant ist das dann ja auch nicht... :)

Hat jemand eine Idee?
Danke schonmal!
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 30.05.14 14:12 
Tatsächlich ListView oder doch eher eine ListBox?
Wenn du nicht aus irgendeinem Grund zwingend einen ListView brauchst. Nimm es nicht sondern lieber eine ListBox.
Legolas Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 30.05.14 14:40 
Nein, es muss leider ein ListView sein.
(Und mir ist gerade aufgefallen, dass nichtmal mein pseudo-Lösungsansatz funktioniert...)
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 30.05.14 14:50 
Dann erzähl mal welchen ListView du verwenden willst?
Dies Chimäre von Control funktioniert ja je nach Einstellung nicht nur ein wenig anders sondern verhält sich eher wie ein anderes Control.
Also welchen View, mit Gruppen oder ohne, Ownerdraw oder nicht ...
Legolas Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 30.05.14 14:55 
Also mein Listview ist an eine Liste mit UserControls gebindet, und horizontal ausgerichtet - als eine Art Menü, in dem man die verschiedenen Seiten auswählen kann. Ich hab dann auf die Einträge des Listviews ein Template mit einem Grid drauf, dass sich ändert, wenn man es auswählt. (Ich hoffe, das beantwortet deine Frage? Wenn nicht, kannst du das nochmal für Noobs erklären? :D )


Zuletzt bearbeitet von Legolas am Fr 30.05.14 15:32, insgesamt 1-mal bearbeitet
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 30.05.14 14:59 
Der Noob bin wohl eher ich :oops: Hab übersehen das es um WPF und nicht um Winforms geht.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4795
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 30.05.14 16:21 
Hallo Legolas,

unter Make ListView.ScrollIntoView Scroll the Item into the Center of the ListView (C#) gibt es einige Implementierungen dafür.

Für diesen Beitrag haben gedankt: Legolas
Legolas Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 30.05.14 16:29 
Oh... wow :D Danke!
Ich steig durch den Code zwar nicht durch, aber er funktioniert perfekt :)

Kann mir jemand kurz sagen, was das hier: "this ItemsControl itemsControl"
ist? Bzw. wenn es zu kompliziert ist, wonach ich googlen müsste?
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4795
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 30.05.14 16:40 
Stichwort: Erweiterungsmethode (extension method) (damit kann man einer Klasse eine neue Methode hinzufügen und sie wie einen Member der Klasse aufrufen, also instance.NewMethod(...), obwohl sie eigentlich nicht zu der ursprünglichen Klasse gehört - ist weitestgehend sog. "syntax sugar").

Für diesen Beitrag haben gedankt: Legolas
Legolas Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 02.06.14 11:55 
Ok... krasse Sache :)
Danke!
Ich hoffe, dass ich jetzt nicht anfange zu nerven, aber ein Problem hätte ich dabei aber noch... :?
Wie krieg ich das hin, dass das Scrollen smooth abläuft?
Also, dass die Items nicht eins "springen", sondern sich gleichmäßig ins Bild hineinbewegen?
Mit ScrollViewer.CanContentScroll="False" funktioniert das zumindest schonmal mit der Scrollbar.
Was ich jetzt versuche ist, dass das auch dann funktioniert, wenn ich die "ScrollToCenterOfView"-Methode verwende...
Ich hab nur leider nicht den leisesten Schimmer, wie ich das hinbekommen könnte... :?
Danke schonmal!

Edit1: Ich hab jetzt das hier: blogs.msdn.com/b/del...-a-scrollviewer.aspx
gefunden. Aber in mein ListView krieg ich das leider nicht so richtig eingebaut..

Edit2: Ich glaube, das ist nicht wirklich das, was ich suche, oder?