Ich habe eine WPF-Anwendung, wo ich das MVVM-Muster verwende.WPF/MVVM - ViewModels in der Anwendungskomponente behalten oder trennen?
Ich lasse die VM für Aktionen aktivieren, die Benutzereingaben erfordern und daher Aufrufe von der VM aktivieren müssen.
Ich habe angefangen, die VMs in eine separate Komponente/Assembly zu trennen, teilweise weil ich sie als testbaren Teil der Einheit sehe, teilweise weil Ansichten sich auf VM verlassen sollten, nicht umgekehrt. Aber wenn ich dann ein Fenster aufrufen muss, ist das Fenster der VM nicht bekannt.
Alle Einführungen finde ich die VM in der WPF/App-Komponente und damit das Problem beseitigt.
Dieser Artikel empfiehlt sie in getrennten Schichten zu halten: http://waf.codeplex.com/wikipage?title=Architecture%20-%20Get%20The%20Big%20Picture&referringTitle=Home
Wie ich es sehe, ich habe folgende Möglichkeiten
Verschieben von VMs auf die WPF/App Montage VMs zu ermöglichen, die Fenster für den Zugriff auf direkt.
Platzieren Sie Schnittstellen von Ansichten in der VM-Assembly, implementieren Sie Ansichten in der WPF/App-Assembly und registrieren Sie die Verbindung über IOC oder auf andere Arten.
Datei ein 'Antrag' von der VM in einen Mechanismus/Bus, leitet die Anforderung (aber welcher Mechanismus !? Z. B etwas in Prism ?!)
Was ist die Empfehlung?
Vielen Dank für alle Kommentare,
Anders, Dänemark
Interessant - Ich habe nie einen Nachrichtenbus für so etwas verwendet, aber hätte gedacht, dass es für größere Systeme war? Für den Rest, Punkte genommen, und danke! –
Es kann eine einfache Klasse sein, die nach Nachrichten horcht und weiß, wohin sie gesendet werden soll (Publisher/Subscriber-Muster). Sie müssen vorsichtig sein, da sie verhindern, dass Ansichten gesammelt werden, wenn Sie Referenzen auf sie im Bus speichern. Einige schlagen vor, schwache Referenzen zu verwenden, um das zu lösen. –
Hallo, Es ist ziemlich eine Krawatte, welche Antwort zu wählen. Ich endete mit Prism.EventAggregator, um Dinge zusammen zu binden. Danke Erno –