Поле списка WPF заливки с массивом строк

Вместо того, чтобы добавить каждый объект один за другим к ListBox destinationList от массива строк m_List как это:

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

Есть ли какой-либо лучший способ, которым я могу сделать это?

Я не хочу связывать данные с destinationList, так как я хочу удалить некоторые записи из ListBox позже.

5
задан dtb 29 April 2010 в 11:55
поделиться

3 ответа

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 as ObservableCollection) ... для работы с элементами, а не Items.Add и т. Д. .

5
ответ дан 13 December 2019 в 05:32
поделиться

Хорошо ... если привязка не является вариантом - а я бы, вероятно, пошел этим путем, если бы это было ... тогда единственный более эффективный способ заполнить список - это сделать это параллельно.

(Чтобы это работало, я предполагаю, что у вас установлена ​​среда выполнения .Net 4 или библиотеки PLinq)

Следующий код продемонстрирует значительные улучшения на многоядерной машине при условии, что набор данных достаточно велик, чтобы гарантировать накладные расходы на первоначальную настройку. Так что это было бы применимо только для больших массивов.

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

Иначе я не вижу ничего плохого в вашем цикле foreach.

0
ответ дан 13 December 2019 в 05:32
поделиться

использовать OberservableCollection

0
ответ дан 13 December 2019 в 05:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: