Я не пробовал этого, но если все строки имеют одинаковую высоту, я думаю, вы могли бы установить первую видимую строку в индекс выбранной строки минус половина количества видимых строк.
Сначала выберите строку, которую вы хотите центрировать, затем:
int x = grid.SelectedRows[0].DisplayIndex;
grid.FirstDisplayedScrollingRowIndex = x - grid.DisplayedRowCount() / 2;