【问题标题】:How to update ListBox control with Dictionary binded to it without jumping to the first item如何在不跳转到第一项的情况下更新绑定到它的字典的 ListBox 控件
【发布时间】:2015-09-09 10:21:43
【问题描述】:

有没有什么方法可以更新绑定了DictionaryListBox 控件,而无需在每次字典更改时重置其DataSource 属性?我不喜欢这个解决方案的原因是它强制ListBox 控件跳转到第一项,如this 等其他问题中所述。

这是一个重现此行为的最小示例 -- https://bitbucket.org/ntrophimov/updating_issue(在 MainForm.cs 文件中读取大约 20 行代码)

这个问题还有其他解决方案吗?

是否有任何字典实现我可以在其中操作项目(添加和删除它们)并且这些更改将立即在 ListBox 控件中表示而不刷新其全部内容?

【问题讨论】:

  • 所以你想构建类似Observable Dictionary 的东西?
  • @Jasper 也许,我只是想修复这个更新行为
  • 嗯.. 如果您担心视觉选择,您可以将其保存为 Selected={Binding SelectedItem} 并在更新 ItemsSource setter/getter 后将其恢复
  • @Jasper 我使用的是 WinForms,而不是 WPF(查看标签)
  • 但是我的解决方案看起来不错(如果我们为 WinForms 改写它)?还是您在寻找其他东西?

标签: c# winforms listbox


【解决方案1】:

想法是:

  1. 您将ListBox 与项目一起显示
  2. 用户点击某个项目
  3. 应用程序将“选定”项保存在局部变量中
  4. 用户/应用发起ListBox更新过程
  5. 更新过程完成 -> 应用程序恢复(重新分配)“选定”项目(如果它对 ListBox 的当前项目仍然有效)

【讨论】:

    猜你喜欢
    • 2014-08-18
    • 1970-01-01
    • 2019-12-14
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    相关资源
    最近更新 更多