2010-01-19 1 views
9

Ich versuche eine ListBox.DataSource = ObservableCollection zu verwenden, aber ich kann nicht herausfinden, wie die Listbox automatisch aktualisiert wird, wenn meine OC aktualisiert wird. Ich kann das CollectionChanged-Ereignis im OC haken, aber was muss ich tun, damit das Listenfeld aktualisiert wird?C# ListBox ObservableCollection <T>

+0

WinForms oder WPF? – McAden

+0

WinForms, aber ich habe die WindowsBase-Assembly eingeschlossen, die ObservableCollection enthält. Ist das nicht der richtige Weg? – WedTM

+0

Winforms wird von IBindingList benachrichtigt, wie Justin Niessner unten beschrieben hat. – McAden

Antwort

17

Basierend auf Ihrer Frage, es klingt wie Sie versuchen, ObservableCollection<T> in einer WinForms-Anwendung zu verwenden.

ObservableCollection<T> wird hauptsächlich in WPF-Entwicklung verwendet. In WinForms wird das Steuerelement automatisch aktualisiert, sobald sich die Sammlung ändert, um Ihre Sammlung zu implementieren IBindingList. Die einfachste Lösung ist die Verwendung von BindingList<T> anstelle von ObservableCollection<T>. Danach sollten Ihre Steuerelemente aktualisiert werden, wenn sich die Sammlung ändert.

MSDN: BindingList(T) Class

+0

Perfekt, das ist was ich gesucht habe! – WedTM

+0

Oder warten Sie, bis .NET 4.0 herauskommt; 'ObservableCollection ' wird nach System.dll verschoben: http://blogs.msdn.com/bclteam/archive/2009/10/21/what-s-ne-in-the-bcl-in-net-4- beta-2-justin-van-patten.aspx (siehe letzter Punkt) –