ausgewählte Element zu zeigen, habe ich ein Datagrid mit vielen Elementen und ich muss programmatisch auf die SelectedItem
blättern. Ich habe auf Stackoverflow und Google durchsucht, und es scheint, die Lösung ScrollIntoView ist, wie folgt:Scroll WPF Datagrid auf
grid.ScrollIntoView(grid.SelectedItem)
, die das Datagrid nach oben oder unten scrollt, bis das ausgewählte Element im Fokus ist. Jedoch kann abhängig von der aktuellen Bildlaufposition relativ zu dem ausgewählten Elemente kann das ausgewählte Element ist, das letzte sichtbare Element in der Scroll des Datenraster enden. Ich mag, dass das ausgewählte Element das erste sichtbare Element in der Scroll sein (vorausgesetzt, es gibt genügend Zeilen im Datagrid dies zu ermöglichen). Also habe ich versucht, dies:
'FindVisualChild is a custom extension method that searches in the visual tree and returns
'the first element of the specified type
Dim sv = grid.FindVisualChild(Of ScrollViewer)
If sv IsNot Nothing Then sv.ScrollToEnd()
grid.ScrollIntoView(grid.SelectedItem)
Zuerst habe ich scrollen bis zum Ende des Datagrid und erst dann blättere ich in die SelectedItem, an welchem Punkt der SelectedItem an der Spitze des Datagrid angezeigt wird.
Mein Problem ist, dass das Scrollen bis zum Ende des DataGrid gut funktioniert, aber das anschließende Scrollen zum ausgewählten Element funktioniert nicht immer.
Wie kann ich dieses Problem lösen, oder gibt es eine andere alternative Strategie für das Scrollen zu einem bestimmten Datensatz in der obersten Position?