2013-03-08 3 views
8

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

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

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

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

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

ответ

8

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

1

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

Построить класс, унаследованный от ObservableCollection, так что вы можете получить доступ к элементам собственности, которая защищена, а затем создать метод 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)); 
} 
Смежные вопросы