使用字符串数组填充WPF列表框

时间:2010-04-29 11:52:23

标签: c# wpf listbox

而不是将每个项目逐个添加到字符串数组destinationList中的ListBox m_List,如下所示:

foreach (object name in m_List)
{
    destinationList.Items.Add((string)name);
}

有没有更好的方法可以做到?

我不想将数据绑定到destinationList,因为我想稍后从ListBox中删除一些条目。

4 个答案:

答案 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循环有什么问题。