Событие BindingList.ListChanged не возникает при изменении свойства

StackOverflow https://stackoverflow.com/questions/835345

  •  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, которое вызывается при изменении значения свойства (для этого вы должны написать код вручную). Затем создайте класс-оболочку списка привязок. Обрабатывать как события списка, так и события пользовательского класса в этом классе.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top