Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wie verschiedene Windows mit MVVM synchron halten?
JimStark
myCSharp.de - Member

Avatar #dOpLzh7hN1az1g0eGRc0.jpg


Dabei seit:
Beiträge: 228

Themenstarter:

Wie verschiedene Windows mit MVVM synchron halten?

beantworten | zitieren | melden

Hi,

nur ganz kurz eine Frage, ich weiß das wurde schon mehrfach durchgekaut, ich bin mir aber nicht sicher was "sauberer" ist:

Aus dem MainWindowViewModel rufe ich per Command ein zweites Fenster auf (OrderDetails), welches ein OrderDetailsViewModel als Context hat. Dem übergebe ich im Konstruktor das gewählte Order Objekt und das DB-Repository.


        public OrderDetailsViewModel(Order order, IDBRepo dbRepo)

Beim Speichern-Command im OrderDetailsViewModel will ich eine Aktualisierung im MainWindowViewModel anstoßen.

Mir fallen jetzt zwei Möglichkeiten ein:


public OrderDetailsViewModel(Order order, IDBRepo dbRepo, MainWindowViewModel parent)
==> ich übergebe die Referenz des Parents im Konstruktor und rufe dann eine Methode auf (z.B. refreshOrders,...)

Oder ich abonniere im MainWindowViewModel ein Event des OrderDetailsViewModels (z.B. DetailsSaved,...)


Was ist besser? Bzw. habt ihr einen besseren Vorschlag?
Danke!
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15703
Herkunft: BW

beantworten | zitieren | melden

"Ganz sauber" übergibst Du gar keine Referenz per Konstruktor, sondern arbeitest mit Subscriptions.
Die Subscription hast Du dann in allen relevanten ViewModels, sodass diese synchron sind.

In WPF geht das über Reactive Extensions: https://github.com/dotnet/reactive
In anderen Frameworks wie zB Angular ist das bereits eingebaut; in WPF leider nicht.
Ein weiteres Projekt in der WPF Welt ist https://www.reactiveui.net/

Reactive WPF – Part 1 – Introduction to Reactive Extensions
private Nachricht | Beiträge des Benutzers