Laden...

MVVM: Event abonieren von einem anderen View

Erstellt von Kriz vor 4 Jahren Letzter Beitrag vor 4 Jahren 962 Views
K
Kriz Themenstarter:in
141 Beiträge seit 2017
vor 4 Jahren
MVVM: Event abonieren von einem anderen View

Guten Morgen!

Ich habe ein Hauptfenster, von dem aus ich ein weiteres Fenster zum Speichern von Daten öffne.
Wenn ich nun in dem Speichern-Fenster bestätige, wird dieses geschlossen und ein Event gefeuert "HabeGespeichert". Wie kann ich im ViewModel meines Hauptfensters auf das Event des ViewModels meines Speichernfensters zugreifen? Also es abonieren.
Oder gibt es für so einen Fall ein anderes Best Practise?

Danke Euch!

656 Beiträge seit 2008
vor 4 Jahren

Wenn du MVVM machst, machst du irgendwo in deinem Haupt-ViewModel doch ein new SpeicherFensterViewModel() (bzw. ein entsprechendes Äquivalent davon), und dieses ViewModel sollte dann das Event haben. Damit kannst du es genau an der Stelle auch abonnieren.

K
Kriz Themenstarter:in
141 Beiträge seit 2017
vor 4 Jahren

@ BhaaL
ne, das Viewmodel wird im Konstruktor vom View erst erstellt

aber stimmt, jetzt wo du es sagst kann ich ja das Viewmodel auch vorher schon, also mit dem View zusammen instanzieren und als DataContext setzen und so dann auch das Event abonieren...

C
26 Beiträge seit 2016
vor 4 Jahren

Ich verwende MVVM-Light in meinen XAML/UWP-Anwendungen und hier gibt es einen Messenger, der genau solche Szenarien abdeckt.

https://stackoverflow.com/questions/18087906/use-mvvm-lights-messenger-to-pass-values-between-view-model

In PRISM gibt es einen EventAggregator:
https://stackoverflow.com/questions/39708411/wpf-mvvm-light-messenger-and-prism-eventaggregator

Auch Caliburn hat so einen Messenger/EventAggregator.
Musst einfach mal schauen was Dein MVVM-Toolkit Dir da anbietet.