而不是将每个项目一个列表框destinationList
从字符串数组m_List
这样的:一个填充WPF列表框与字符串数组
foreach (object name in m_List)
{
destinationList.Items.Add((string)name);
}
有没有什么更好的办法我能做到吗?
我不想将数据绑定到destinationList,因为我想稍后从列表框中删除一些条目。
而不是将每个项目一个列表框destinationList
从字符串数组m_List
这样的:一个填充WPF列表框与字符串数组
foreach (object name in m_List)
{
destinationList.Items.Add((string)name);
}
有没有什么更好的办法我能做到吗?
我不想将数据绑定到destinationList,因为我想稍后从列表框中删除一些条目。
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);
只要使用(如的ItemSource的ObservableCollection)......与项目合作,而不是Items.Add等
好吧..如果结合不是一种选择 - 如果是这样的话,我可能会这样......然后填充列表框的唯一更有效的方法是并行执行。
(对于这个工作我假设你有.net 4运行时,或安装在PLINQ库)
下面的代码会显示在多核机器上大量的改进,提供的数据收集足够大保证初始设置的开销。所以这只适用于较大的阵列。
Parallel.ForEach(list, r => destinationList.Items.Add(r));
否则我没有看到你的foreach循环有什么问题。
如果你只想表达它更优雅,那么也许这将工作。
stringList.ForEach(item => listBox1.Items.Add(item));
这是美丽的 – ohmusama 2013-10-18 17:34:36
除了字符串铸造,如果绑定是不是你的选择我不觉得在上面的代码什么坏事。但我会建议你将列表框绑定到你的集合(ObservableCollection会更好)。即使有比这更好的东西,它会最终通过你的收藏迭代。如果你打算经常使用它,你可以为它写一个方法,把你的列表作为参数发送。 – Amsakanna 2010-04-29 11:58:10
我不想绑定它,因为我想稍后从中删除几件物品。 – Archie 2010-04-29 12:00:32
为什么你认为你不能删除物品,如果他们绑定? – Amsakanna 2010-04-29 12:03:21