Справочное равенство в ListBox SelectedItem - PullRequest
0 голосов
/ 23 февраля 2012

Я работаю над приложением Silverlight для WP7 (Mango), и у меня есть ListBox (показывает компании), который заполняется запросом на обслуживание. У меня также есть объект профиля, загруженный из другого запроса на обслуживание.
К сожалению, у меня нет контроля над API службы, поэтому в профиле нет int CompanyId (к которому я мог бы привязать SelectedValue ListBox), но у него есть другой экземпляр Company.
Это вызывает проблему, начиная с Profile.Company.Equals(Companies.Single(o=>o.Id == Profile.Company.Id)) == false, поэтому при привязке к ListBox (<ListBox ItemsSource="{Binding Companies}" SelectedItem="{Binding Profile.Company, Mode=TwoWay}" DisplayMemberPath="Name" />) изначально ничего не выбирается.

Я думал, что решу эту проблему, заставив Компанию внедрить IEquatable<Company> и внедрив ее путем сравнения идентификаторов. Механизм привязки вызывает IndexOf (selectedItem) в моей коллекции, который вызывает Company.Equals, которая правильно возвращает true для нужного элемента.

Тем не менее, все еще ничего не выбрано в ListBox.
Какого черта ??

...