WPF ComboBox - 如何在源集合更改时保持选择?

时间:2011-05-16 07:49:18

标签: wpf mvvm binding

如果在ItemsSource集合中替换了当前选择的项目,如何在组合框上保持选择?在这种情况下,集合是一个ObservableCollection,当然如果当前选择的项目被替换,组合框将失去其选择 - 没有选择任何内容。

ComboBox看起来像:

                        <ComboBox 
                            Name="combobox"
                            SelectedValuePath="Id" 
                            DisplayMemberPath="Description" 
                            SelectedValue="{Binding Source={StaticResource cvs}, Path=Id, Mode=TwoWay}"/>

我不能简单地每次手动在组合框上设置所选项目,因为集合是在我无法触及的另一个通用类中操作的!

谢谢!

2 个答案:

答案 0 :(得分:1)

将selectedVaule绑定到您的Id属性。因此,如果您希望新添加的项目是所选项目,只需将您的Id属性设置为新项目并调用OnPropertyChanged(“Id”)

myCollection.Remove(oldItem);
myCollection.Add(newItem);
Id = newItem;
OnPropertyChanged("Id")

答案 1 :(得分:0)

使用此代码选择新项目:

combobox.SelectedItem = newItem;

更新:
如果替换项目的代码部分不知道combobox,则需要执行以下操作:

  • 订阅您收藏的CollectionChanged活动。
  • 当事件被触发并且表示添加了新项目时,请执行如上所示的代码。