Прослушайте событие CollectionChanged
и проверьте, была ли изменена коллекция, если есть какие-либо дубликаты, и удалите их.
Кроме того, вы можете взглянуть на этот вопрос и его ответ на наблюдаемую коллекцию, которая также уведомляет вас, когда изменяются свойства ее элементов.
Редактировать:
Если вы не хотите использовать коллекцию, о которой я говорил выше, вы можете убедиться, что элементы вашей коллекции реализуют INotifyPropertyChanged
, и каждый раз, когда вы добавляете элемент в коллекцию, слушайте его событие PropertyChanged
. В обработчике вы проверяете, является ли изменяемое свойство тем, которое отображается в ListBox, и проверяете, имеет ли какой-либо другой элемент такое же значение этого свойства. Если вы найдете такой элемент, вы либо измените значение вашего свойства на его старое значение, либо полностью удалите элемент, это зависит от логики вашего приложения.