Het databinden van een Object collectie aan een listbox

 
08 december 2008

English version of this article

Wanneer je een object collectie databind aan een  listbox, wordt de ToString() method gebruikt om de items te visualiseren in de listbox. Het toevoegen en verwijderen van items zorgt voor een update in de listbox, maar het veranderen van de ToString() output niet.

Vreemd genoeg werkt dit wel zoals verwacht bij de CheckedListbox control, welke overerft van de ListBox control. Het werkt niet direct, je moet na de wijziging de Invalidate methode aanroepen op de CheckedListBox Control.

De oplossing ligt in het implementeren van de INotifyPropertyChanged interface op het object in de collectie. Wanneer je deze interface implementeert is het niet meer nodig om de Invalidate() method aan te roepen.

Code voorbeeld:

List<persoon> mensen = new List<persoon>();
mensen.Add(new persoon(“Sjors Miltenburg”));
mensen.Add(new persoon(“Stefan Bookholt”));

listBox1.DataSource = mensen;
listBox1.DisplayMember = “Naam”;

checkedListBox1.DataSource = meensen;
checkedListBox1.DisplayMember = “Naam”;

//Dit is het punt waar de ListBox control niet meer update
//als de persoon class niet de INotifyPropertyChanged interface
//implementeert

mensen[0].Name = “Pieter Joost vd Sande”;


Werken met ?
Kijk dan bij onze mogelijkheden voor zowel starters als ervaren engineers.


Categorieën: Development

Tags: , , , , ,