【问题标题】:WPF: ComboBox only refreshes to binding when never openedWPF:组合框仅在从未打开时刷新绑定
【发布时间】:2011-03-16 12:40:25
【问题描述】:

我有一个组合框并将 itemssource 设置为字符串列表:

private List<string> list = new List<string>();
...
ComboBox cbo = new ComboBox();
cbo.ItemsSource = list;

组合框在启动时成功填充。
但是当列表更改时,组合框不会更新其项目,但只有当我之前展开项目时,组合框才会更新...
也很奇怪:当我跟踪组合框的项目计数时,计数是正确的更新数字,但显示的项目不是。
有人有想法,这是怎么回事?

编辑:在 cmets 中查看解决方案以发布 Robert

【问题讨论】:

  • 您应该发布更多代码。您发布的代码中的问题已通过使用 ObservableCollection 解决,但您至少应在此处添加更新列表的代码。

标签: wpf binding combobox


【解决方案1】:

我猜你需要使用 ObservableCollection 而不是 List,因为当集合发生变化时需要通知 ComboBox。

【讨论】:

  • 我已经尝试过了,但是当我想打开组合框时出现以下异常:“事件无法调用任何订阅者。(来自 HRESULT 的异常:0x80040201)”
  • 如何通过 {Binding Items} 扩展从 xaml 尝试它
  • 在我的架构中是不可能的。但是我发现,当我在没有调试的情况下启动应用程序时,错误没有出现(参见connect.microsoft.com/VisualStudio/feedback/details/607403/…)。但我认为,这是另一个问题。所以感谢您的解决方案。
【解决方案2】:

将列表更改为 ObservableCollection。

【讨论】:

    【解决方案3】:

    使用 ObservalbeCollection。它具有通知和更改项目数量的内置机制。

    【讨论】:

    • 三遍相同的答案会更好...请先阅读以前的答案!
    猜你喜欢
    • 2013-07-02
    • 1970-01-01
    • 2012-06-18
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多