2011-01-12 1 views
7

Ich entwickle eine Anwendung, die derzeit Prism und MEF verwendet.Menüelement für jedes Modul, wobei der Modulinhalt dynamisch mit Prism oder MEF geladen wird

Ich möchte idealerweise eine Symbolleiste oder ein Menü mit einem Element für jedes Modul generieren, und wenn ein Element angeklickt wird, werden nur die in diesem Modul deklarierten Ansichten in ein Registersteuerelement geladen.

Zum Beispiel:

Menü Region: ModuleA (Auswahl) | ModuleB

Registerkarte Region: ModuleAViewA | ModuleAViewB | ModuleAViewC

Änderungen an Menü Region: Mitarbeiter | Inventar (ausgewählt)

Tab Region: Items | In Fi

Antwort

11

Es gibt eine Menge Fragen, die dem hier ähnlich sind. Im Allgemeinen besteht die Vorgehensweise darin, einen Dienst in einer Infrastruktur-DLL zu definieren, auf die Ihre Module verweisen können. Ihre Module fügen Menü/Toolbar/Ribbon-Element/was auch immer Objekte durch den Dienst hinzu. Wo der Service implementiert wird, bleibt Ihnen überlassen - entweder im Shell-Projekt, in der Infrastruktur oder in einem separaten Modul. Offensichtlich müssen Sie, wenn es sich in einem separaten Modul befindet, sicherstellen, dass Ihre anderen Module es als Abhängigkeit definieren.

Möglicherweise möchten Sie die folgende auszuchecken:

Dieses eine Verknüpfung zu einem Projekt hat ein dynamisches Menü zeigt: Looking for Prism example of Modules loading themselves into a menu

, in dem ich eine Frage stellen, wie ein dynamisches Menü zu erstellen: How to dynamically add MenuItems (with a header) to a WPF menu

mehr .... Load Module Default Views In Region to Create Menu

Und vieles mehr! Menu service in Prism application CAL

Sie können mehr als dies auch da draußen finden. Dies war eine ziemlich häufige Anfrage; Ich bin mir sicher, dass Sie einen guten Ansatz dafür aus den Code-Beispielen da draußen zusammensetzen können.

+0

Danke, dass Sie mich in die richtige Richtung weisen. Ich habe ein wenig gesucht, aber nichts Konkretes gefunden. – digiteknique

+0

sehr informativ danke. –

Verwandte Themen