Событие BindingList.ListChanged не возникает при изменении свойства - PullRequest
2 голосов
/ 07 мая 2009

У меня есть BindingList типа User, объект User имеет несколько свойств (имя пользователя, пароль и т. Д.). Поэтому я привязал обработчик событий к событию 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

Ответы [ 2 ]

9 голосов
/ 07 мая 2009

Ваш тип пользователя необходимо реализовать INotifyPropertyChanged.

0 голосов
/ 07 мая 2009

Единственный способ, которым я могу думать, - это определить событие в классе User, которое вызывается при изменении значения свойства (для этого вы должны написать код вручную). Затем создайте класс-оболочку списка привязок. Обрабатывать как события списка, так и события пользовательского класса в этом классе.

Я могу подробнее рассказать, если вам нравится идея ...

...