我有一個DataGrid有很多項目,我需要以編程方式滾動到SelectedItem
。我已經搜索StackOverflow上和谷歌,似乎解決的辦法是ScrollIntoView,如下:滾動WPF DataGrid顯示頂部的選定項目
grid.ScrollIntoView(grid.SelectedItem)
其滾動的DataGrid向上或向下,直到所選擇的項目是重點。但是,根據相對於所選項目的當前滾動位置,所選項目可能最終成爲DataGrid的ScrollViewer中最後一個可見項目。我希望所選項目將成爲ScrollViewer中的第一個可見項目(假設DataGrid中有足夠的行來允許這個項目)。所以,我想這一點:
'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)
首先,我滾動到DataGrid的結束,只有到那時我滾動到的SelectedItem,此時的SelectedItem在DataGrid的頂部。
我的問題是滾動到DataGrid的末端工作正常,但隨後滾動到選定的項目並不總是工作。
我該如何解決這個問題,或者是否有任何其他策略滾動到頂部位置的特定記錄?