У меня настроено приложение WPF datagrid:
1) Определяет вручную все столбцы, устанавливает их привязки и для каждой привязки указывает, что она уведомляет об обновлениях источника
2) Добавлен обработчик события для события SourceUpdated сетки данных
3) В обработчике событий у меня есть только следующий код:
this.updatedItems.Add(BindingOperations.GetBindingExpression(e.TargetObject, e.Property).DataItem as MyClass);
updatedItems - это HashSet <>, а MyClass - это тип объектов, связанных с сеткой элементов данных ItemsSouce.
4) Когда пользователь нажимает кнопку «Сохранить», я просто перечисляю хэш-набор. Хэшсет хорош, потому что он содержит только уникальные значения. Поэтому, если строка редактируется несколько раз или даже если несколько ячеек в одной строке редактируются, хэш-набор будет по-прежнему содержать только одну запись для объекта.