Когда фокус клавиатуры возвращается к DataGrid (например, нажатием клавиши Tab), ее фокусированная ячейка (DataGrid.CurrentCell) изменяется, и теперь она выходит за пределы DataGrid.SelectedCells.
Хорошо, мы можем восстановить DataGrid.CurrentCell, используя следующий код в событии DataGrid.GotKeyboardFocus:
if (MyDataGrid.SelectedCells.Count > 0)
MyDataGrid.CurrentCell = MyDataGrid.SelectedCells.First();
Более сложный случай заключается в следующем. Две вкладки, каждая из которых содержит DataGrid:

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

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