而不是将每个项目逐个添加到字符串数组destinationList
中的ListBox m_List
,如下所示:
foreach (object name in m_List)
{
destinationList.Items.Add((string)name);
}
有没有更好的方法可以做到?
我不想将数据绑定到destinationList,因为我想稍后从ListBox中删除一些条目。
答案 0 :(得分:6)
如果你只想更优雅地表达它,那么也许这会奏效。
stringList.ForEach(item => listBox1.Items.Add(item));
答案 1 :(得分:5)
HTH:
string[] list = new string[] { "1", "2", "3" };
ObservableCollection<string> oList;
oList = new System.Collections.ObjectModel.ObservableCollection<string>(list);
listBox1.DataContext = oList;
Binding binding = new Binding();
listBox1.SetBinding(ListBox.ItemsSourceProperty, binding);
(listBox1.ItemsSource as ObservableCollection<string>).RemoveAt(0);
只需使用(ItemSsource作为ObservableCollection)...来处理项目,而不是使用Items.Add等。
答案 2 :(得分:0)
使用ObservableCollection
答案 3 :(得分:0)
好吧..如果绑定不是一个选项 - 如果它是......那么我可能会这样做...那么填充列表框的唯一更有效的方法是并行执行。
(为此,我假设你有.Net 4运行时,或安装了PLinq库)
以下代码将显示多核机器的大量改进,前提是数据收集足够大以保证初始设置的开销。所以这只适用于较大的阵列。
Parallel.ForEach(list, r => destinationList.Items.Add(r));
否则我没有看到你的foreach循环有什么问题。