Похоже, что это проблема, которую нелегко решить, добавив логику в событие SelectionChanged. Что я делаю, так это удаляю весь код из этого события и помещаю его в событие MouseLeftUpButton каждой строки. Вот код для этого ...
Private Sub dgrd_LoadingRow(ByVal sender As Object, ByVal e As System.Windows.Controls.DataGridRowEventArgs)
AddHandler e.Row.MouseLeftButtonUp, AddressOf ClientGrid_SelectRow
End Sub
Private Sub ClientGrid_SelectRow(ByVal sender As Object, ByVal e As MouseEventArgs)
Dim SelectedRow As DataGridRow = CType(sender, DataGridRow)
//SelectedRow.DataContext is equivlent to e.AddedItems(0) in the SelectionChanged Event
//Add the SelectionChanged logic here
End Sub