0

设置:

  1. 有一个绑定到 ObservableCollection 的 ComboBox。
  2. UI 中有一个 Car 对象。它的 Color 属性绑定到 ComboBox 的 SelectedItem(绑定:<ComboBox SelectedItem="{Binding Car.Color}".../>
  3. 颜色列表可以在数据库中更改,有时应该刷新。

问题:

ObservableCollection<MyColor>刷新时(== 这意味着它Reset在其CollectionChanged事件中发送一个),Car 的 Color 属性设置为集合中的第一个项目 => 刷新列表 => ComboBox 重新加载集合并将其选定的项目设置为第一个集合中的一个 => 汽车的颜色更改为相同的第一项(因为双向绑定)=> 问题

简而言之 - 我怎样才能避免这种情况?如何在重新加载时告知将所选项目立即从绑定中取出?

4

1 回答 1

0

您可以在集合更改时删除绑定:

var binding = comboBox.GetBindingExpression(ComboBox.SelectedItemProperty).ParentBinding;
comboBox.ClearValue(ComboBox.SelectedItemProperty);

ChangingData.Clear();
// <Rebuild>

comboBox.SetBinding(ComboBox.SelectedItemProperty, binding);
于 2011-06-14T03:16:09.720 回答