Ich habe versucht, ein ItemsControl mit einem VirtualizingStackPanel zu bekommen, um eine Zeit lang zu einem Element zu blättern, und habe immer wieder die Antwort "Benutze eine ListBox" gefunden. Ich wollte nicht, also habe ich einen Weg gefunden, es zu tun. Zuerst müssen Sie eine Kontrollschablone für Ihr ItemsControl einrichten, die einen ScrollViewer enthält (den Sie wahrscheinlich bereits haben, wenn Sie ein Element-Steuerelement verwenden). Meine Basisvorlage sieht folgendermaßen aus (in einem praktischen Stil für das ItemsControl enthalten)
%Vor% Also habe ich im Grunde einen Rahmen mit einem Scroll-Viewer, der meinen Inhalt enthält.
Mein ItemsControl ist definiert mit:
Ok, jetzt zum Spaß. Ich habe eine Erweiterungsmethode erstellt, die an jedes ItemsControl angehängt wird, um es zum gewünschten Element zu scrollen:
%Vor%Wenn Sie also die Erweiterungsmethode verwenden, verwenden Sie sie genauso wie die Begleitmethode von ListBox:
%Vor%Funktioniert gut!
Beachten Sie, dass Sie auch sv.ScrollToEnd () und die anderen üblichen Scrollmethoden aufrufen können, um Ihre Elemente zu umgehen.
Ich weiß, dass ich ziemlich spät auf der Party bin, aber hoffentlich hilft das einem anderen, der nach der Lösung sucht ...
%Vor%... und mein XAML ist so eingerichtet ...
%Vor%Wenn ich im .NET-Quellcode herumstokele, empfehle ich Ihnen die Verwendung von %code% und dessen %code% Methode. Die Implementierung dieser Methode beruht auf einigen %code% -Methoden wie %code% , die die Erstellung des Elements in diesem Index erzwingen und zu diesem scrollen. Die Tatsache, dass viele dieser Mechanismen intern sind, bedeutet, dass, wenn Sie versuchen, dies auf eigene Faust zu tun Sie eine schlimme Zeit haben werden.
(Um die Auswahl unsichtbar zu machen, können Sie die %code% erneut eingeben)
Ich habe ein %code% , das seine Elemente in %code% anzeigt und virtualisiert. Ich versuche, dieses %code% zu einem (offscreen, also virtualisierten) Element zu scrollen, das es enthält. Da das Element jedoch virtualisiert ist, existiert es nicht wirklich auf dem Bildschirm und hat keine Position (IIUC).
Ich habe %code% für das untergeordnete Element ausprobiert, aber es wird nicht in die Ansicht gerollt. Ich habe auch versucht, es manuell mit %code% , %code% und %code% , aber %code% kehrt nie zurück (ich denke auch wegen der Virtualisierung, weil es keine Position hat, aber ich habe keinen Beweis dafür) und Code, nachdem es nie ausgeführt wird.
Ist es möglich, zu einem Objekt mit einem virtualisierten %code% zu blättern? Wenn ja, wie?