双向绑定和选择器

时间:2010-12-03 09:35:25

标签: wpf data-binding two-way

设定:

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

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

    总之 - 我怎么能避免这种情况?如何判断重新加载以立即从绑定中获取所选项目?

1 个答案:

答案 0 :(得分:0)

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

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

ChangingData.Clear();
// <Rebuild>

comboBox.SetBinding(ComboBox.SelectedItemProperty, binding);