A ligação de SelectedItem DataGrid do WPF pára de funcionar após a alteração do item

Meu problema / situação é muito semelhante aoWpf DataGrid SelectedItem perde a vinculação após edição de célula mas não estou usando nenhum framework "personalizado" do WPF. Eu tenho um modelo que implementaINotifyPropertyChanged eIEditableObjecte uma grade ligada a umObservableCollection<T>. A gradeSelectedItem propriedade está vinculada a uma propriedade na VM.

Com um ponto de interrupção, posso ver meuViewModel.SelectedItem alteração de propriedade ao selecionar linhas diferentes na grade. No momento em que mudo um valor em uma linha,ViewModel.SelectedItem a propriedade não está mais definida, pois altero o foco nas linhas. A solução identificada no link acima não funciona, pois não estou usando uma estrutura WPF personalizada, apenas o WPF nu.

Alguma ideia?

// View model area
public IPurchaseorderItem SelectedItem
{
    get 
    { 
        return _selectedItem;
    }

    set
    {
        if (_selectedItem != value)
        {
            _selectedItem = value;
            SelectItemCommand.NotifyCanExecuteChanged();
            RemoveItemCommand.NotifyCanExecuteChanged();
        }
    }
}

// XAML SelectedItem binding
<views:NoBindingGroupDataGrid SelectedItem="{Binding SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"  

// Special Grid to clear binding groups (read on a similarly themed SO question/answer)
internal sealed class NoBindingGroupDataGrid : DataGrid
{
    private bool _editing = false;

    protected override System.Windows.Size MeasureOverride(System.Windows.Size availableSize)
    {
        var desiredSize = base.MeasureOverride(availableSize);
        ClearBindingGroup();
        return desiredSize;
    }

    protected override void OnCellEditEnding(DataGridCellEditEndingEventArgs e)
    {
        base.OnCellEditEnding(e);

        if (!_editing)
        {
            _editing = true;

            CommitEdit(DataGridEditingUnit.Row, true);

            _editing = false;
        }
    }

    private void ClearBindingGroup()
    {
        ItemBindingGroup = null;

        foreach (var item in Items)
        {
            var row = ItemContainerGenerator.ContainerFromItem(item) as FrameworkElement;

            if (row != null)
            {
                row.BindingGroup = null;
            }
        }
    }
}

questionAnswers(1)

yourAnswerToTheQuestion