El enlace del elemento seleccionado de WPF DataGrid deja de funcionar después de cambiar el artículo

Mi problema / situación es muy similar aWpf DataGrid SelectedItem pierde el enlace después de la edición de la celda&nbsp;pero no estoy usando ningún marco WPF "personalizado". Tengo un modelo que implementa.INotifyPropertyChanged&nbsp;yIEditableObject, y una rejilla unida a unObservableCollection<T>. La cuadrículaSelectedItem&nbsp;La propiedad está vinculada a una propiedad en la máquina virtual.

Con un punto de quiebre, puedo ver miViewModel.SelectedItem&nbsp;Cambio de propiedad al seleccionar diferentes filas en la cuadrícula. En el momento en que cambio un valor en una fila, sin embargo, elViewModel.SelectedItem&nbsp;La propiedad ya no está establecida cuando cambio el enfoque en las filas. La solución identificada en el enlace anterior no funciona, ya que no estoy usando un marco WPF personalizado, solo WPF desnudo.

¿Algunas ideas?

// 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;
            }
        }
    }
}