2013-03-08 12 views
8

In un'applicazione C# seguente matrice viene utilizzata:Conversione di un array di ObservableCollection

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

Tuttavia ho bisogno del projectArray come ObservableCollection<CProject>. Quale sarebbe il modo consigliato per farlo? Finora sto usando la seguente dichiarazione:

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

Utilizzeresti anche questa affermazione o suggeriresti altri modi?

risposta

8

Costruire una nuova collezione da un IEnumerable come hai fatto è il modo per farlo.

1

IMHO, Costruire una nuova collezione ogni volta che si desidera aggiungere una gamma di oggetti non è buona, piuttosto vorrei seguire la progettazione di seguito.

Costruire una classe che eredita da ObservableCollection, in modo da poter accedere agli elementi di proprietà che è protetta e quindi creare un metodo AddRange che aggiungerà elementi in esso

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)); 
} 
Problemi correlati