【问题标题】:Combobox - Update and select new added item after itemssource changed组合框 - 在 itemssource 更改后更新并选择新添加的项目
【发布时间】:2016-06-12 18:59:50
【问题描述】:

我有一个带有 ComboBox 和一个按钮的简单 WPF 表单。 ComboBox 的 ItemSource 是一个字典,其中包括目录中的文件名。该按钮用于通过使用“打开文件对话框”复制新文件来添加新文件。

我用于绑定的代码:

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

我希望 ComboBox 在将新文件添加到 Dictionary 并设置为 SelectedItem 后刷新项目。 我试过这个来提神,但没有用:

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

我在这里看到了一些问题,但没有一个有帮助。有谁知道我该怎么做?

【问题讨论】:

    标签: c# wpf dictionary combobox


    【解决方案1】:

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

    【讨论】:

    • 看到您的评论后,我对 Observable Dictionary 进行了挖掘,并找到了 user-made class。你可能想看看!
    • 是的 - 可以。 ObservableDictionary 会在它发生变化时发出通知——这正是你所追求的。还有 ObservableList 等。你也可以自己做。我注意到在我给你的链接中,它明确地发送了它通知更改的属性的名称。在较新版本的 .Net 中,您可以改用 MemberCallerName 属性,我认为这会使代码“更干净”。
    猜你喜欢
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多