Hallo zusammen,
ich habe mir eine Klasse geschireben, an deren Instanzen ich diverse GUI-Elemente binden möchte.
Dazu erbe ich von der Klasse INotifyPropertyChanged und "alarmiere" Änderungen wie folgt:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } |
Die einzelnen Variablen editiere ich dann wie folgt:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| [DataMember] public string Person_Telefonnummer { get { return _Person_Telefonnummer; } set { if (_Person_Telefonnummer != value) { _Person_Telefonnummer = value; OnPropertyChanged("Person_Telefonnummer"); } } } private string _Person_Telefonnummer; |
Das funktioniert auch so weit sehr gut. Darüber hinaus habe ich aber auch ICollections als DataSource für ListBoxen ausgewählt. Die ICollections habe ich quasi identishc angelegt, erhalte hier jedoch bei dem Add-Befehl keine aktualisierung der ListBox. Woran kann dies liegen?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| [DataMember] public ICollection<Fahrzeug> Fahrzeuge { get { return _Fahrzeuge; } set { if (_Fahrzeuge != value) { _Fahrzeuge = value; OnPropertyChanged("Fahrzeuge"); } } } private ICollection<Fahrzeug> _Fahrzeuge = new Collection<Fahrzeug>(); |
Kann mir jemand einen Tipp geben wieso dies mit ICollection incht funktioniert? Bzw. habe ich etwas mit dem DataBindings falsche gemacht?
Vielen Dank an alle!
Edit: achso, ich denke man muss anstelle OnPropertyChanged für die Collections ein Event der Kategorie NotifyCollectionChangedEventHandler aufrufen. Leider bekomme ich das bishe rnicht richtig hin!