Я работаю над приложением 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.
Какого черта ??