Ich beginne meinen ersten Ausflug in die Welt von Prism v4/MVVM mit MEF & WPF. Ich habe erfolgreich eine Shell gebaut und mithilfe von MEF Module entdecken und initialisieren können. Ich bin mir jedoch unsicher, wie die Ansichten dieser Module richtig dargestellt werden.Prism/MVVM (MEF/WPF): Exposing Navigation [Menü zum Beispiel] von Modulen
Angenommen, eines der Module bietet drei Ansichten und ich möchte die Navigation zu diesen Ansichten in einem Menü-Steuerelement anzeigen. Bis jetzt habe ich erfolgreich eine Ansicht basierend auf einer MenuItem
ausgesetzt und diese MenuItem
enthält Kind MenuItem
steuert so eine Befehlsherarchie, die verwendet werden kann. Groß.
Das ist, das fühlt sich falsch an. Ich sage jetzt in meinem Modul, dass die Navigation (und damit die Shell) die Verwendung von Menüs unterstützen muss. Was wäre, wenn ich einen ToolBar
oder sogar einen verwenden möchte? Ich müsste dann alle meine Module ändern, um die entsprechenden Kontrolltypen für die Shell freizulegen.
Ich habe mich umgesehen und es gibt auf einigen Seiten die Erwähnung eines "Service" zur Navigation, wobei bei der Initialisierung des Moduls Navigationsoptionen dem Dienst hinzugefügt werden, der wiederum von der Shell zur Anzeige verwendet wird Diese Navigation in welchem Format auch immer (ToolBar
, TreeView
, , MenuItem
etc.) - aber ich kann keine Beispiele dafür finden, dies tatsächlich zu tun.
Um all dies in die richtige Perspektive zu bringen, suche ich schließlich in der Lage sein, Ansichten aus einem Menü und/oder anderen Navigationssteuerung (wahrscheinlich ein) auszuwählen und dann diese Ansichten bei Bedarf innerhalb einer TabControl zu öffnen. Ich bin schon so weit gekommen, dass ich die Ansichten in der TabControl
zur Modulinitialisierungszeit erstellen kann, jetzt brauche ich den nächsten Schritt.
Was ich wissen muss, ist das: Was wäre der richtige Weg, um Navigationsoptionen so zu exponieren, dass nicht auf die Unterstützung einer bestimmten Steuerung durch die Shell bestehen, und wenn ein Service der richtige Weg ist Wie würde man das innerhalb der Prism/MVVM-Muster zusammensetzen?
Vielen Dank im Voraus für jede Einsicht, die Sie anbieten können.
Ich mag diese Art, da es eine völlig generische Option ist, die die Shell verlässt, um zu entscheiden, wie sie die Elemente anzeigen wird. Abgesehen davon habe ich weitere Gedanken zu diesem Thema gehabt und bin tatsächlich einen anderen Weg gegangen, den ich als separate Antwort dokumentieren werde. Vielen Dank. –
Vergessen Sie nicht, dass Sie ein MenuItemViewModel an MenuItems anpassen können (check-fähig oder mit Unterpunkten). Sie müssen eine spezifischere Schnittstelle herstellen. Aber das war ein Beispiel. Habe Spaß. – SandRock