2010-01-19 10 views
9

Sto tentando di utilizzare un ListBox.DataSource = ObservableCollection, tuttavia non riesco a capire come aggiornare automaticamente la listbox quando il mio OC si aggiorna. Posso collegare l'evento CollectionChanged all'OC, ma cosa devo fare alla listbox per farlo aggiornare?C# ListBox ObservableCollection <T>

+0

WinForms o WPF? – McAden

+0

WinForms, ma ho incluso l'assembly WindowsBase che contiene ObserveableCollection. Non è questo il modo giusto per farlo? – WedTM

+0

Winforms viene notificato da IBindingList come descritto da Justin Niessner. – McAden

risposta

17

In base alla tua domanda, sembra che tu stia cercando di utilizzare ObservableCollection<T> in un'applicazione WinForms.

ObservableCollection<T> viene utilizzato principalmente nello sviluppo WPF. In WinForms, affinché il controllo si aggiorni automaticamente quando la raccolta cambia, la raccolta deve implementare IBindingList.

La soluzione più semplice è utilizzare BindingList<T> anziché ObservableCollection<T>. Successivamente, i tuoi controlli dovrebbero essere aggiornati man mano che la collezione cambia.

MSDN: BindingList(T) Class

+0

Perfetto, questo è quello che stavo cercando! – WedTM

+0

Oppure attendere che esca .NET 4.0; 'ObservableCollection ' verrà spostato in System.dll: http://blogs.msdn.com/bclteam/archive/2009/10/21/what-s-new-in-the-bcl-in-net-4- beta-2-justin-van-patten.aspx (vedi l'ultimo elemento) –

Problemi correlati