C # Force ListBox для обновления элементов - PullRequest
5 голосов
/ 06 февраля 2009

Я подклассифицирую стандартный элемент управления ListBox. Я получаю уведомления об изменениях любого из элементов, добавленных в список. Задача состоит в том, чтобы обновить текст, отображаемый ListBox, для изменяющегося элемента.

Я знаю, что я мог бы просто удалить измененный элемент и добавить его снова, но это не является предпочтительным по очевидным причинам.

Ответы [ 2 ]

15 голосов
/ 06 февраля 2009

К сожалению, привязка данных в ListView не поддерживает регулярные (элемент) события уведомлений об изменениях (FooChanged / INotifyPropertyChanged). Однако, если вы знаете об изменениях, вы можете получить список для повторной привязки. Так как вы подклассы, вы можете позвонить:

this.RefreshItems();

или для одного предмета:

this.RefreshItem(index);

В противном случае, поскольку это не является общедоступным, вы можете смоделировать его, изменив DisplayMember:

lb.DisplayMember = "";
lb.DisplayMember = "Bar";

Возможно, немного хакерский, но он работает и поддерживает текущий выбор и т. Д. (В отличие от очистки DataSource).

1 голос
/ 06 февраля 2009

Почему бы вам вручную не обновить текст рассматриваемого элемента? Вы также можете рассмотреть возможность внедрения собственного механизма привязки данных для ListBox. И проверьте ObjectListView , чтобы увидеть, если это поможет

...