我有一个绑定到自定义集合类型的组合框 - 它基本上是一个重写的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的约束,但它仍然知道它被换成了另一个。组合只是放弃了它的选择。
有人可以帮忙吗?
答案 0 :(得分:0)
我假设你的oldItem在这种情况下是SelectedValue?
删除此项目后,您的绑定会立即更新。因此,从列表中删除该值将清除您的选择。
如果您想要替换该项目,您可能想要尝试获取SelectedValue,将其保存在变量中,并在更换项目后设置SelectedValue,如下所示:
object oldValue = SelectedValue;
//Do awesome stuff to replace things
SelectedValue = oldValue;
HTH