Combobox - 更新并选择新项目后,itemssource更改

Combobox - 更新并选择新项目后,itemssource更改

问题描述:

我有一个简单的WPF窗体与一个组合框和一个按钮。 ComboBox的ItemSource是一个包含目录中文件名称的字典。该按钮用于通过使用“打开文件”对话框复制文件来添加新文件。我用结合Combobox - 更新并选择新项目后,itemssource更改

代码:

cmbClasses.ItemsSource = classList; 
cmbClasses.DisplayMemberPath = "Key"; 
cmbClasses.SelectedValuePath = "Value"; 

我想组合框增加新的文件,以字典后刷新项目,集是的SelectedItem。 我想这对令人耳目一新,但没有奏效:

cmbClasses.Items.Clear(); 
cmbClasses.ItemsSource = classList; 
cmbClasses.DisplayMemberPath = "Key"; 
cmbClasses.SelectedValuePath = "Value"; 

我看见有几个问题在这里,但他们没有帮助。任何人都知道我该怎么做?

首先,将ItemsSource数据绑定到可观察的集合属性或其他可以并将通知属性已更改事件的东西。这应该在列表在幕后改变时更新组合框列表。将所选值绑定到另一个属性并将该值动态设置为您刚刚添加的值。 Here's这样做的一种方式......快速谷歌搜索将会出现大量其他教程/示例。祝你好运,希望这有助于!

+0

当我看到你的评论后,我做了一个关于Observable Dictionary的挖掘,发现了一个[user-made class](http://drwpf.com/blog/2007/09/16/can-i-bind-my-itemscontrol -to-A-字典/)。你可能想看看! – cameloper

+1

是的 - 这会工作。 ObservableDictionary会在它发生变化时发出通知 - 确切地说你正在做什么。还有ObservableList 等。你也可以自己做。我在我给你的链接中注意到,它明确地发送了它所通知的财产的名称改变。在较新版本的.Net中,你可以使用MemberCallerName属性来代替,这使我认为代码“更清洁”。 – Paul