It seems that the CurrentCell and CurrentRow are not kept in sync.
I think this is similar to what's mentioned in this post:
We fixed it with this code:
private void ContractProxyGridView_CurrentCellChanged(object sender, GridViewCurrentCellChangedEventArgs e)
if (e.NewCell == null || e.NewCell.ParentRow == null) return;
e.NewCell.ParentRow.IsCurrent = true;
Is there a reason for this behavior?