Announcement

Collapse
No announcement yet.

MVVM ObservableCollection

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MVVM ObservableCollection

    Hallo,

    ich habe eine Klasse "Kunde", mit welcher ich 5 verschiedene Kunden angelegt habe.
    In einer ObservableCollection<Kunde> sind die Kunden gespeichert und werden in einem ListView angezeigt.

    Alles MVVM!

    Im Code selbst habe ich folgenden Code:

    Code:
    private Kunde _Kunde;
    
    public Kunde CurrentKunde
    {
    get { return _Kunde; }
    set { _Kunde = value; }
    }
    Dieser CurrentKunde wird in View gebunden an zwei Textboxen, Vorname und Nachname. Wenn ich nun anfange zu schreiben (UpdateSourceTrigger=PropertyChanged) wird der Inhalt "sofort" auch in der ListView geändert.
    Im Normalfall ist die Kunden-Class ein EF-Model. Ich möchte das so hinbekommen dass ich nach der Änderung nocheinmal bestätigen muss bevor die Auflistung geändert wird.
    Leider wird jeder Inhalt der ObservableCollection, auch wenn er übergeben wird, immer sofort aktualisiert. Hat viele Vorteile, aber in meinem Fall soll diese warten...

    Hat jemand eine Idee?

    Gruß
    Die Taschenlampe!

    Die perfekte Taschenlampe für Ihr Windows Phone!

    - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
    - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


    Hier gehts zu APP!

  • #2
    Dann möchtest du wahrscheinlich UpdateSourceTrigger=Explicit und nicht PropertyChanged. Deine Bestätigung, was immer das jetzt auch immer genau bedeutet' müsste dann selbst UpdateSource aufrufen.

    Comment


    • #3
      Eine andere Möglichkeit wäre es auch im ViewModel einfach die Logik für sowas zu bauen. Etwas in der Art:

      [highlight=c#]
      public class KundenViewModel
      {
      private Kunde _kunde;

      public KundenViewModel(Kunde kunde)
      {
      _kunde = kunde;
      KundenName = _kunde.Name;
      }

      public string KundenName { get; set; }

      public void Save()
      {
      _kunde.Name = KundenName;
      }

      public void Cancel()
      {
      KundenName = _kunde.Name;
      }
      }

      // INotifyPropertyChanged usw. hab ich mir mal gespart
      [/highlight]

      Ich denke das ganze ist selbsterklärend. Kommt drauf an wieviel Kontrolle Du brauchst ist aber auch etwas Aufwand wenn der Kunde viele Properties hat. Evtl. würden dann Frameworks wie AutoMapper ohne ähnliches helfen um eine Mapping zwischen den Properties des ViewModels und Deines Datenmodells zu schaffen. Ralfs Ansatz ist natürlich auch gut.

      Comment


      • #4
        Hallo zusammen,

        Explicit kenne ich und will ich nicht nutzen da ich mit Validation arbeite und dies sofort anschlagen soll.

        Die Methode von Fanderlf gefällt mir sehr gut, dann war ich quasi schon am richtigen weg, da ich dies so angefangen habe. War mir nur nicht sicher ob es nicht anders ginge. Aber so werde ich es nun machen!

        Tausenden Dank und wunderschönen Tag noch!

        Gruß, Flo
        Die Taschenlampe!

        Die perfekte Taschenlampe für Ihr Windows Phone!

        - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
        - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


        Hier gehts zu APP!

        Comment

        Working...
        X