Преобразование массива в ObservableCollection

в приложении C# используется следующий массив:

CProject[] projectArray = this.proxy.getProjectList(username, password);

однако мне нужно projectArray как ObservableCollection<CProject>. Что бы быть рекомендуемый способ сделать это? До сих пор я использую следующее утверждение:

ObservableCollection<CProject> projectList = new ObservableCollection<CProject>(projectArray);

вы бы также использовали этот оператор или рекомендовали бы другие способы?

2 ответов


создание новой коллекции из IEnumerable Как вы это сделали, это способ сделать это.


IMHO, создание новой коллекции каждый раз, когда вы хотите добавить диапазон объектов, не очень хорошо, а я бы следовал ниже дизайна.

создайте класс, наследующий от ObservableCollection, чтобы вы могли получить доступ к свойству Items, которое защищено, а затем создать метод AddRange, который добавит в него элементы

public class MyObObservableCollection<T> : ObservableCollection<T>
{
    public void AddRange(IEnumerable<T> items)
    {
        foreach (var item in items)
        {
            this.Items.Add(item);
        }

    }
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add));
}