привязка wpf по выбранному значению - замена связанного объекта без нарушения привязки - PullRequest
0 голосов
/ 27 апреля 2010

У меня есть поле со списком, привязанное к пользовательскому типу коллекции - это в основном переопределенная коллекция ObservableCollection, в которую я добавил средство для обновления базовой коллекции (через Unity).

Я не хочу слишком сильно путать проблему, но это фон.

Мой xaml выглядит так

<ComboBox ItemsSource="{Binding Manufacturers}" DisplayMemberPath="Name"  SelectedValuePath="ID" SelectedValue="{Binding Vehicle.ManufacturerID}" />

И в моей переопределенной коллекции я делал это.

var index = IndexOf(oldItem);
this[index] = (T)newItem;

Я надеялся, потому что он связан значением, что вставка нового объекта (который имеет тот же идентификатор) поверх старого объекта будет работать. Но кажется, что, хотя он связан с SelectedValue, он все же знает, что его обменивают на другой. Комбо просто теряет свой выбор.

Может кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 27 апреля 2010

Я предполагаю, что ваш oldItem был SelectedValue в этом случае?

Когда вы удаляете этот предмет, ваша привязка обновляется мгновенно. Поэтому удаление этого значения из списка очистит ваш выбор.

Если вы хотите заменить элемент, вы можете попытаться получить SelectedValue, сохранить его в переменной и установить SelectedValue позже, когда вы замените свой элемент, например, так:

object oldValue = SelectedValue;
//Do awesome stuff to replace things
SelectedValue = oldValue;

НТН

...