WPF DataGrid: как восстановить сфокусированную ячейку после того, как DataGrid потерял и получил фокус - PullRequest
0 голосов
/ 15 апреля 2019

Когда фокус клавиатуры возвращается к DataGrid (например, нажатием клавиши Tab), ее фокусированная ячейка (DataGrid.CurrentCell) изменяется, и теперь она выходит за пределы DataGrid.SelectedCells.

Хорошо, мы можем восстановить DataGrid.CurrentCell, используя следующий код в событии DataGrid.GotKeyboardFocus:

if (MyDataGrid.SelectedCells.Count > 0)
    MyDataGrid.CurrentCell = MyDataGrid.SelectedCells.First();

Более сложный случай заключается в следующем. Две вкладки, каждая из которых содержит DataGrid:
Tab 1, scrolled down

Теперь переключаемся на «Tab 2» и обратно на «Tab 1»:
Tab 1, after switching to Tab 2 and back

Да, мы все еще можем восстановить CurrentCell в событии TabControl.SelectionChanged, как показано выше, но мы также должны восстановить положение вертикальной прокрутки. Более того, пользователь будет кратко видеть границу вокруг верхней ячейки и смещение контента каждый раз, когда он переключает вкладку. Есть ли более элегантное решение для сохранения (или восстановления) сфокусированной ячейки?

...