У меня есть DataGrid со многими элементами, и мне нужно программно прокрутить до SelectedItem
. Я искал StackOverflow и Google, и кажется, что решение - ScrollIntoView, как показано ниже:
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 работает хорошо, но последующая прокрутка к выбранному элементу не всегда работает.
Как я могу решить эту проблему или есть ли другая альтернативная стратегия прокрутки определенной записи в верхней позиции?