wpf按选定值绑定 - 在不干扰绑定的情况下交换绑定对象

时间:2010-04-27 15:00:44

标签: c# wpf xaml binding observablecollection

我有一个绑定到自定义集合类型的组合框 - 它基本上是一个重写的ObservableCollection,我添加了一个工具来更新底层集合(通过Unity)。

我不想过多地混淆这个问题,但这就是背景。

我的xaml看起来像这样

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

在我被覆盖的集合中,我正在这样做。

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

我曾希望因为它受到值的约束,所以在旧对象上插入新对象(具有相同的id)会起作用。但似乎虽然它受SelectedValue的约束,但它仍然知道它被换成了另一个。组合只是放弃了它的选择。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我假设你的oldItem在这种情况下是SelectedValue?

删除此项目后,您的绑定会立即更新。因此,从列表中删除该值将清除您的选择。

如果您想要替换该项目,您可能想要尝试获取SelectedValue,将其保存在变量中,并在更换项目后设置SelectedValue,如下所示:

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

HTH