WPF DataGrid Привязка SelectedItem перестает работать после изменения элемента

Моя проблема / ситуация очень похожа наWpf DataGrid SelectedItem теряет привязку после редактирования ячейки но я не использую какие-либо "пользовательские" рамки WPF. У меня есть модель, которая реализуетINotifyPropertyChanged а такжеIEditableObjectи сетка привязана кObservableCollection<T>, СеткаSelectedItem свойство связано со свойством на виртуальной машине.

С точкой останова я вижуViewModel.SelectedItem изменение свойства, поскольку я выбираю разные строки в сетке. Однако в тот момент, когда я изменяю значение в строке,ViewModel.SelectedItem свойство больше не устанавливается, так как я меняю фокус на строках. Решение, указанное в приведенной выше ссылке, не работает, так как я не использую пользовательскую платформу WPF, просто голый WPF.

Есть идеи?

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

Ответы на вопрос(1)

Ваш ответ на вопрос