【发布时间】:2015-06-11 14:07:50
【问题描述】:
我有一个 ObservableCollection 绑定到这样的列表框:
string[] selection = comboEmail.GetItemText(comboEmail.SelectedItem).Split(',');
Employee add = new Employee(Convert.ToInt32(selection[0]), selection[1], selection[2], selection[3]);
displayEmp.Add(add);
listEmail.DataSource = displayEmp;
它将数据添加到列表框(listEmail),但是,删除后如何更新它。这是我迄今为止尝试过的:
int indexRemoval = listEmail.SelectedIndex;
displayEmp.RemoveAt(indexRemoval);
listEmail.DataSource = displayEmp;
//listEmail.Refresh();
但它不起作用。用户单击删除按钮后如何更新列表?
【问题讨论】:
-
您对 MVVM 的处理方式有一些问题...一旦绑定,ObservableCollection 就不需要手动刷新了。您的按钮也应该绑定到命令,删除应该使用
listEmail.SelectedItem。此外,绑定应该在 XAML 中进行,而不是在代码隐藏中(我没有经验,所以我无法帮助你)。这个想法是让逻辑完全脱离 UI。 -
@Kilazu - 谢谢,我坚持使用常规 List 集合。
-
你为什么要这样做?
-
我没有使用 ObservableCollection 的经验,这是在另一篇文章中向我建议的。我以前使用 List 集合,它正在工作。我会坚持下去。除了更多的代码行之外,还有什么理由我不应该使用 List?
-
你来自 Winforms,对吧?我去过那里,去 MVVM WPF 是一个相当复杂的步骤。如果您需要快速运行的东西,请适合自己并使用列表;但最终,如果你想继续使用 WPF,你应该学习 MVVM、绑定等。至于原因,这不仅仅是关于一个列表,而是关于您将在程序中使用的所有内容。如果它很短,不要理会 MVVM;如果您将来需要可维护的东西,那就是 MVVM。
标签: c# winforms collections listbox