Событие BindingList.ListChanged не возникает при изменении свойства
-
08-07-2019 - |
Вопрос
У меня есть BindingList типа User, у объекта User есть несколько свойств (UserName, Password и т. д.). Поэтому я привязал обработчик события к событию BindingList.ListChanged, и он прекрасно работает при добавлении или удалении пользователя, НО, если пользовательское свойство изменяется, оно не вызывает событие, есть ли способ достичь этого?
bindingListUsers.Add(someUser); // This raises ListChangedEvent
bindingListUsers.Delete(someUser); // This raises ListChangedEvent
bindingListUsers[0].UserName = "Another user name"; // This does NOT raise the event
Решение
Тип вашего пользователя должен реализовывать INotifyPropertyChanged
.
Другие советы
Единственный способ, которым я могу думать, - это определить событие в классе User, которое вызывается при изменении значения свойства (для этого вы должны написать код вручную). Затем создайте класс-оболочку списка привязок. Обрабатывать как события списка, так и события пользовательского класса в этом классе.
Я могу подробнее рассказать, если вам нравится идея ...