代码之家  ›  专栏  ›  技术社区  ›  Archie

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

  •  4
  • Archie  · 技术社区  · 15 年前

    而不是将每个项逐个添加到列表框中 destinationList 从字符串数组 m_List 这样地:

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

    有没有更好的办法?

    我不想将数据绑定到DestinationList,因为稍后我想从列表框中删除一些条目。

    4 回复  |  直到 14 年前
        1
  •  5
  •   Andrew    15 年前

    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)…处理项目,而不是项目。添加等。

        2
  •  6
  •   Bent Tranberg    14 年前

    如果你只想更优雅地表达它,那么也许这是可行的。

    stringList.ForEach(item => listBox1.Items.Add(item));
    
        3
  •  0
  •   Kishore Kumar    15 年前

    使用OberservableCollection

        4
  •  0
  •   Mark Pearl    15 年前

    可以。。如果绑定不是一个选项-如果它是…然后,填充列表框的唯一更有效的方法是并行进行。

    (为了使其工作,我假设您安装了.NET 4运行时或PLINQ库)

    以下代码将显示多核机器的巨大改进,前提是数据收集足够大,能够保证初始设置的开销。所以这只适用于更大的阵列。

    Parallel.ForEach(list, r => destinationList.Items.Add(r));
    

    否则我看不出你的前臂环有什么问题。