WPF DataGrid SelectedItem绑定在项目更改后停止工作

我的问题/情况非常类似于Wpf DataGrid,SelectedItem在单元格编辑后丢失了绑定,但我没有使用任何“自定义”WPF框架。 我有一个实现INotifyPropertyChangedIEditableObject的模型,以及绑定到ObservableCollection的网格。 网格的SelectedItem属性绑定到VM上的属性。

有了断点,我可以看到我的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; } } } } 

显然,DataGrid上的SelectedItem依赖项属性已被破坏且未正确使用。 在使用OnPropertyChanged进行一些调试之后,我发现网格实际上是可靠地设置了“CurrentItem”属性。 我改为使用CurrentItem,一切似乎都正常工作……用户的“选定行”正在被发送到VM而不会发生意外。