Я случайно нашел решение, хотя не знаю, почему оно работает.
Кажется, что вызов Settings.Default.MyBindingList.ResetBindings()
или Settings.Default.MyBindingList.ResetItem(1)
( не имеет значения, какой номер передается ResetItem()
), прежде чем вызов Save()
решит проблему.
BindingList
не должен помечать свои значения как измененные, даже если элементы в списке правильно реализуют INotifyPropertyChanged
.
Примечательно, что вызов Settings.Default.MachineList.Machines.EndNew(1)
также решает проблему (!?!). Из документации :
Метод EndNew
фиксирует ожидающий новый элемент, который был добавлен с помощью метода AddNew
. Если нет нового элемента, ожидающего подтверждения, этот метод ничего не делает.
Может кто-нибудь пролить свет на это? Я что-то не так делаю, или это ошибка в DataGridView
или BindingList
(или, возможно, в Settings
провайдере)?