none
ObservableCollection aktualisieren RRS feed

  • 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!

    Donnerstag, 6. November 2014 08:36

Antworten

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

    Donnerstag, 6. November 2014 08:57
  • 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

    Donnerstag, 6. November 2014 11:27
  • 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!

    Donnerstag, 6. November 2014 14:49
  • 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!

    Freitag, 7. November 2014 14:21