PRISMA 2 SL : Entfernen Sie Anzeigen von Region, wenn die Schaltfläche geklickt wird
Ich bin neu an Prism und ich bin versucht zu ermitteln, die eine best practice für die Deaktivierung einer Ansicht in ein Prism-2-Anwendung-wenn ein Benutzer klickt auf eine Schaltfläche auf der Ansicht-möchte ich deaktivieren Sie die Ansicht. Die Ansicht ist, ein Kommando auszuführen, wenn auf die Schaltfläche geklickt wird.
View-Modell erhält den Befehl, aber das viewmodel nicht über einen Verweis auf die regionmanager.
Sollte die view-Modell-wissen über die region-manager? Und selbst wenn das viewmodel hatte einen Verweis darauf, es muss die view-Instanz zu übergeben, um die deaktiv-Methode, auf die Sie enthaltende region.
Ich bin mit dem MVVM-Muster für die app.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich werde gehen auf ein Glied hier und davon ausgehen, dass Sie ein itemscontrol oder solche für Ihre region, denn das ist die offensichtliche Verwendung eines "- button, der entfernt a view".
In diesem Fall sollten Sie einen Controller (oder was auch immer Sie es nennen wollen, aber das PRISMA-team scheint die Verwendung dieser Art von Namen für diese Art von Verantwortung) irgendwo in die Leitung der aktiven ViewModels, und entweder Sie anzeigen Ihren Blick mit DataTemplates, oder Sie manuell erstellen/hinzufügen/aktivieren Sie eine neue Ansicht beim hinzufügen einer neuen Instanz.
Ihr Fall scheint der zweite, und der controller sollte verantwortlich sein für die Verwaltung der Ansichten. Der viewmodel sollte einen Verweis auf das controller durch Dependency Injection und bitten Sie es, um es zu entfernen aus dem pool der aktiven Modelle/Ansichten.
Den Controller selbst erhält die IRegionManager und findet auch für die Region verantwortlich ist.
Ich hoffe das macht Sinn, bitte Kommentar, wenn es nicht.
EventAggregator
in deinem Fall (Kontrolle muss entladen sich) ist vielleicht ein overkill, weil einfach die Injektion vonIRegionManager
zu, dass control view model Konstruktorund dann sowas
sollten tun, was Sie gefragt haben.
IRegionManager
ist mockable-Schnittstelle ermöglicht ein einfaches testen und es ist nur eine Abstraktion, nicht die Kupplung, die Sie für die Ausführung und Ermöglichung IoC.Bekam ich hing auch hier. Ich fand, dass, weil die RegionManager war verantwortlich für die Regionen, die es enthielt, war ich am Ende mit enge Kopplung zwischen meine RegionManager und die Regionen, die ich wollte zu verwalten.
Es war eine komplexe Arbeit zu verwalten, diese Regionen extern (von sagen Hauptanwendungs-Menü) und als Ergebnis ließen wir den PRISM-framework und schrieben unsere eigenen code auf der Grundlage der Composite Application Guidance Elemente, die waren in unserem speziellen Szenario.