2010-04-27 1 views
0

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

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

Моя XAML выглядит следующим образом

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

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

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

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

Помогите пожалуйста?

ответ

0

Я предполагаю, что ваш старый идентификатор был выбранным в этом случае?

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

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

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

HTH

+0

Привет, спасибо за вашу помощь, но поскольку мой код находится в моем переопределенном ObservableCollection, у меня нет доступа к SelectedValue из поля со списком. Любые другие идеи? –

+0

Хм вы правы .. можете ли вы «обновить» существующий элемент новыми значениями свойств? – Arcturus

+0

Как ни странно, я просто подумал и использовал отражение, чтобы скопировать свойства. Кажется, работает очень хорошо! –

 Смежные вопросы

  • Нет связанных вопросов^_^