Ich versuche, eine WPF-Anwendung mit WPF und PRISM zu erstellen. Ich benutze auch MEF und MVVM. Ist es möglich, zwei Viewmodels zu verwenden, die miteinander kommunizieren können, indem Sie den Ereignisaggregator verwenden? Z.B. Im Ansichtsmodell A veröffentlichen und im Ansichtsmodell B abonnieren? Und wenn ja wie? Ich habe ein Programm mit mehreren Viewmodels erstellt und einige dieser Viewmodels sollten miteinander kommunizieren, aber wenn ich in Viewmodel A mit einem Eventaggregator publiziere, wird A Subscribe im Viewmodell B niemals als Teil desselben Ereignisaggregators erkannt, so dass dies nicht möglich ist update my View verbunden mit viewmodel B.PRISM MEF Kommunikation von ViewModel zu ViewModel mit Eventaggregator in WPF
Antwort
Die einzige Möglichkeit ist, dass ViewModel "B" nicht geladen ist oder das Event noch nicht abonniert hat. Wenn das nicht stimmt, empfehle ich Ihnen, einige Schnipsel einzufügen.
Abonnieren Sie eine WeakReference (ein schwaches Abonnement)? Wenn dies der Fall ist und Ihr Abonnent nicht an anderer Stelle referenziert wird, wird möglicherweise Müll gesammelt und verschwindet, bevor Sie das Ereignis veröffentlichen.
Dies ist die Grundschlüsselschritte Ereignis Aggregator
(1) Event erstellen Agg ..
public class Yourevent zu definieren: CompositePresentationEvent {
}
(2) Verlag vm
eventAggregator.Get(). Veröffentlichen (Objekt);
(3) Subscription Vm
Yourevent eventObj = eventAggregator.Get();
Der EventAggregator ist immer der gleiche, Sie müssen es von jedem Viewmodel übergeben. Prism und MEF kann dies für Sie tun:
Sie Eventaggregator im Konstruktor mithilfe von Unity of PRISM
laden können Sie einen Verweis von Eventaggregator mit MEF
injizieren Haben Sie eine Instanz von ViewModel "B" und ViewModel "A"? Veröffentlichen Sie das Ereignis, bevor der Abonnementcode ausgeführt wurde? Veröffentlichen sie beide das gleiche Event?
EventAggregator.GetEvent(Of MyEventType).Subscribe(Sub()
End Sub)
- 1. Prism ViewModel Einstiegspunkt/Ausgangspunkt
- 2. Abhängigkeitseigenschaft in Viewmodel in Prism
- 3. MEF: Erstellen eines ViewModel in meinen UserControls
- 4. Verwenden von EventAggregator zur Kommunikation zwischen WPF in ElementHost und Host WinForm
- 5. wpf Viewmodel mit mehreren Hierarchen
- 6. Model-View-ViewModel in WPF
- 7. Prism 6 bekomme ShellViewModel Kontext in anderen viewModel
- 8. Verwenden von Modellvalidierungsregeln in WPF ViewModel
- 9. Abrufen von WPF ListView.SelectedItems in ViewModel
- 10. asynchrones UI-Update von Viewmodel in WPF
- 11. ListBox-Bindung mit ViewModel in WPF
- 12. MVVM ViewModel im Vergleich zu MVC ViewModel
- 13. WPF-Bindungsanwendungsbefehle an ViewModel ICommand
- 14. WPF Binding ComboBox zu meinem ViewModel
- 15. WPF (MVVM): Schließen einer Ansicht von Viewmodel?
- 16. Prism für Xamarin.Forms: EventAggregator von der Plattform projects
- 17. Update ViewModel und View
- 18. WPF Treeview - Synchronisierung mit einem ViewModel?
- 19. Unity Dependency Injection von usercontrol viewmodel zu customUsercontrol Viewmodel
- 20. MVVM-Entwurf: Blockieren von MessageBox in ViewModel
- 21. Prism/mef Ansichtsmodell: Pro und Contra von Eigentum gegen Ctor
- 22. Aufruf von ViewModel-Methoden
- 23. Ansicht von ViewModel zu Einstellungen
- 24. WPF-Einstellung Stil StaticResource in ViewModel
- 25. WPF MVVM - Bindungseigenschaften auf UserControls zu ViewModel von Container
- 26. WPF Prism InteractionRequestTrigger: Erneutes Erstellen von View und ViewModel bei der Anzeige
- 27. Passing Objekt zu ViewModel
- 28. Zugriff auf ViewModel in JavaScript-Funktion außerhalb von ViewModel Bereich
- 29. KeyEventArgs zu ViewModel aus Sicht in WPF (MVVM) übergeben
- 30. ViewModel oder ValueConverter für WPF View