Я использую ListBox для поддержки списка элементов в приложении WPF. Источник данных ListBox - это HashSet, заключенный в ObservableCollection. т.е. у меня есть следующий код:
this.shackSet = new ObservableCollection<Shack>(new HashSet<Shack>());
this.shackListing.ItemsSource = this.shackSet;
... где shackListing - это элемент управления ListBox, а shackSet - в коллекции ICollection. Однако всякий раз, когда я добавляю что-либо в shackSet после добавления первого элемента, я вижу несколько элементов в ListBox. т.е. как будто недавно добавленные элементы добавляются в список независимо от того, добавлены ли они в набор. Когда я смотрю на подписи ICollection # Add:
void Add(T obj);
... и HashSet # Добавить:
bool Add(T obj);
... это наводит меня на мысль, что есть ошибка, которая влияет на обернутые HashSets, когда вновь добавленные элементы добавляются в ListBox независимо от того, что ObservableCollection не имеет возможности узнать, действительно ли объект был добавлен в базовую коллекцию, потому что возвращаемый тип ICollection # Добавить недействительно. Кто-нибудь еще может это подтвердить?