I found this way, not as a solution, but it works.
Private Sub DGEditing_CellEditEnding(sender As Object, e As DataGridCellEditEndingEventArgs) Handles DGEditing.CellEditEnding
Dim editedElement As FrameworkElement = TryCast(e.EditingElement, FrameworkElement)
If editedElement IsNot Nothing Then editedElement.MoveFocus(New TraversalRequest(FocusNavigationDirection.Up))
End Sub
So I set
FocusNavigationDirection to Up.
When the user finishes editing and press Enter, the focus will go down, and immediately goes up. So what the user see is the focus is still on the cell.
So the problem is as I have sub for event
CurrentCellChanged, unfortunately with this code I wrote here, it fires two times. So anybody has any idea to improve this code?