Benutzer mit den meisten Antworten
ObservableCollection aktualisieren

Frage
-
Hallo zusammen,
ich habe gerade folgendes Problem: Ich arbeite mit EF6, und lade die Daten aus der Tabelle "Rohstoffe" in eine ObservableCollection, welche an ein ListView gebunden ist. Nach dem ich einen Rohstoff ausgewählt habe, werden im ViewModel Variablen gesetzt, um ein direktes Binden zu verhindern. So also:
string bezeichnung = SelectedRohstoff.bezeichnung.....
Wenn alle Daten bearbeitet wurden, und gespeichert werden soll, läuft es umgekehrt:
SelectedRohstoff.bezeichnung = bezeichnung.....
Mein Problem: Natürlich aktualisiert sich die ObservableCollection nicht, da keine direkte Bindung stattfindet. Der string bezeichnung löst ein PropertyChanged aus
public string bezeichnung
{
get {return _bezeichnung;}
set {_bezeichnung = value; OnPropertyChanged("bezeichnung");}
}Aber dies hilft nichts. Gibt es eine saubere Lösung dafür?
MfG Flo
FLOGERSOFT.de - Top Apps, wie z.B. 'Die Taschenlampe' oder ganz neu dabei: 'LiveClock' die Echtzeituhr für ihre Windows Phone Live-Kachel - mit Wettervorhersage!
Antworten
-
Hi Flo,
fange einfach das OnPropertyChanged-Ereignis ab und führe in dieser Ereignisroutine die Zuweisungen aus.--
Peter
Meine Homepage mit Tipps und Tricks- Als Antwort vorgeschlagen Aleksander Chalabashiev Donnerstag, 6. November 2014 13:08
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 11. November 2014 07:23
-
Hi Flo,
du musst, nachdem du die Eigenschaften eines Items in einer ObservableCollection geändert hast, ein OnCollectionChanged auf die ObservableCollection auslösen. In die zu übergebenden Argumente kannst du dein geändertes Item der Collection verpacken. Damit sollte durch das DataBinding die View das entsprechende Item aktualisieren.
Andreas Richter
Softwareentwickler und -architekt
http://www.anrichter.net- Als Antwort vorgeschlagen Aleksander Chalabashiev Donnerstag, 6. November 2014 13:08
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 11. November 2014 07:23
Alle Antworten
-
Hi Flo,
fange einfach das OnPropertyChanged-Ereignis ab und führe in dieser Ereignisroutine die Zuweisungen aus.--
Peter
Meine Homepage mit Tipps und Tricks- Als Antwort vorgeschlagen Aleksander Chalabashiev Donnerstag, 6. November 2014 13:08
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 11. November 2014 07:23
-
Hi Flo,
du musst, nachdem du die Eigenschaften eines Items in einer ObservableCollection geändert hast, ein OnCollectionChanged auf die ObservableCollection auslösen. In die zu übergebenden Argumente kannst du dein geändertes Item der Collection verpacken. Damit sollte durch das DataBinding die View das entsprechende Item aktualisieren.
Andreas Richter
Softwareentwickler und -architekt
http://www.anrichter.net- Als Antwort vorgeschlagen Aleksander Chalabashiev Donnerstag, 6. November 2014 13:08
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 11. November 2014 07:23
-
Wo soll ich das Ereignis abfangen, und wie soll ich die Zuweisungen setzen? Es nützt in meinen Augen ja nichts, oder verstehe ich dich falsch? Immerhin müsste ja die EF-Klasse das PropertyChanged aufrufen, was sie ja nicht kann.
MfG Flo
FLOGERSOFT.de - Top Apps, wie z.B. 'Die Taschenlampe' oder ganz neu dabei: 'LiveClock' die Echtzeituhr für ihre Windows Phone Live-Kachel - mit Wettervorhersage!
-
Habe es nun so gelöst: Die EF-Klasse wird komplett in einem eigenen "Rohstoff-ViewModel" gewrapt, und dieses an die Collection gebunden. Somit finded die aktualisierung einwandfrei statt, und das ViewModel kümmert sich um die korrekten Daten. Das ist ein sauberer Weg, somit umgehe ich das Problem.
Eine erweiterte ObservableCollection zu schreiben, welche das OnCollectionChanged an bestimmten Situationen mittels einer void o.ä. aufruft wäre auch gegangen, hat mir aber nicht so gefallen.
Vielen Dank für eure Hilfe!!
MfG Flo
FLOGERSOFT.de - Top Apps, wie z.B. 'Die Taschenlampe' oder ganz neu dabei: 'LiveClock' die Echtzeituhr für ihre Windows Phone Live-Kachel - mit Wettervorhersage!