wpf (C #) DataGrid ScrollIntoView - wie blättert man zur ersten Zeile, die nicht angezeigt wird?

7

Ich versuche, ein WPF-Datagrid mit Code nach unten zu scrollen. Ich benutze

%Vor%

Scrollt nur nach unten, wenn die Zeile itemNum nicht angezeigt wird.

Wenn das DataGrid beispielsweise lang genug ist, um 10 Zeilen zu enthalten, und ich 20 Zeilen habe, muss ich diese Funktion 11 Mal aufrufen (bis itemNum 11 ist), um zur nächsten Zeile zu scrollen.

Es scrollt nicht nach unten, wenn die Zeile bereits in das Raster passt (auch wenn es die letzte auf dem Bildschirm ist).

Ich möchte erreichen, dass, wenn ich diese Methode rufe, das Gitter die nächste Zeile an die Spitze des Rasters bringt (wie es der Scroller macht). Warum funktioniert es nicht?

    
Programer 12.03.2012, 13:01
quelle

2 Antworten

18

Verwenden Sie DataGridView.FirstDisplayedScrollingRowIndex.

%Vor%

Tut mir leid, dass WPF Grid das nicht hatte. Der Punkt zum Scrollen bleibt gültig.

ScrollIntoView scrollt nur, wenn das Objekt nicht sichtbar ist, und macht es zur letzten Zeile, wenn es unterhalb der aktuellen sichtbaren Zeilen liegt. Wenn Sie also zum 11. Element scrollen, sieht es so aus, als würde es zum zweiten scrollen.

Diese Arbeit sollte für Sie funktionieren. Sie scrollen zur untersten Zeile und scrollen dann zu der Zeile, die Sie benötigen. Beachten Sie, dass Sie hier das Layout aktualisieren müssen oder dass die Ergebnisse des ersten Scrolls ignoriert werden, bevor Sie erneut scrollen.

%Vor%     
Tsabo 12.03.2012 15:00
quelle
2

Überprüfen Sie dies , es ist für eine ListBox aber die Einsicht ist großartig und es kann auch für das Gitter funktionieren:

Mit ein paar Worten: Die Elemente werden asynchron in die ListBox geladen. Wenn Sie also ScrollIntoView () innerhalb des CollectionChanged-Ereignisses (o.ä.) aufrufen, hat es noch keine Elemente, also kein Scrollen.

Hoffe es hilft, es hat mir sicher geholfen! ; -)

    
Hannish 05.11.2012 10:35
quelle

Tags und Links