проблема связывания ListBox на ObservableCollection <T> - PullRequest
0 голосов
/ 16 марта 2010

У меня странная «проблема». Может ли кто-нибудь объяснить мне, почему:

Если у меня в ObservableCollection дважды (или более раз) элемент с одинаковым значением, то выбор этих значений в ListBox не будет работать должным образом?

Фактически, что делает ListBox, когда я щелкаю по элементу (даже при выборе одного элемента): он выбирает первый элемент из коллекции ObservableCollection с соответствующим значением. так что в случае, если в коллекции несколько элементов с одинаковым значением, будет выбран только первый!

Ответы [ 2 ]

2 голосов
/ 16 марта 2010

Поскольку объекты, введенные вами в коллекцию, имеют одинаковые ссылки. Вы должны создавать новые экземпляры в каждом случае или переопределять функцию Equal и писать свою логику для идентификации элементов. WPF ListBox вызывает функцию Object.Equal, чтобы определить, совпадают ли элементы.

Надеюсь, это поможет

0 голосов
/ 16 марта 2010

Вам нужно создать новый объект для хранения каждого объекта.

* 1003 Т.е. *

MyCollection.Add(new MyContainer() { Data = myObject } );

Таким образом, список будет правильно выбирать объекты, так как он имеет уникальные контейнеры.

Это было бы неявно, если бы вы использовали ViewModels

...