sto iniziando la mia prima incursione nel mondo del prisma v4/MVVM con MEF & WPF. Ho costruito con successo una shell e, usando MEF, sono in grado di scoprire e inizializzare i moduli. Tuttavia, non sono sicuro del modo corretto di fornire la navigazione alle viste esposte da questi moduli.Prism/MVVM (MEF/WPF): Esposizione di navigazione [per esempio di Menu] dai moduli
Per esempio, diciamo che uno dei moduli espone tre punti di vista e voglio visualizzare la navigazione a questi punti di vista su un controllo di menu. Finora, ho esposto con successo una vista basata su una MenuItem
e questo MenuItem
contiene bambino MenuItem
controlli fornendo così una gerarchia di comando che può essere utilizzato. Grande.
Il fatto è che questo sembra sbagliato. Ora sto affermando nel mio modulo che la navigazione (e quindi la shell) DEVE supportare l'uso dei menu. Cosa succede se volevo passare all'utilizzo di ToolBar
o anche a Ribbon
. Dovrei quindi cambiare tutti i miei moduli per esporre i corrispondenti tipi di controllo per la shell.
Mi sono guardato intorno e su alcuni siti è stato menzionato l'utilizzo di un "Servizio" per fornire la navigazione, per cui durante l'inizializzazione del modulo, le opzioni di navigazione vengono aggiunte al servizio che a sua volta viene utilizzato dalla shell per visualizzare questa navigazione in qualsiasi formato che vuole (ToolBar
, TreeView
, Ribbon
, MenuItem
ecc) - ma non riesco a trovare alcun esempio di realtà facendo questo.
Per mettere tutto in prospettiva, alla fine sto cercando di essere in grado di selezionare le visualizzazioni da un menu e/o un altro controllo di navigazione (probabilmente uno Ribbon
) e quindi aprire tali visualizzazioni su richiesta all'interno di un TabControl. Sono già riuscito a creare le viste nel TabControl
in fase di inizializzazione del modulo, ora ho bisogno del passaggio successivo.
Quello che ho bisogno di sapere è questo: quale sarebbe il modo corretto di esporre le opzioni di navigazione in modo tale da non insistere sul supporto di un controllo specifico da parte della shell, e se un servizio è la strada da percorrere allora come si potrebbe mettere questo insieme nei modelli Prism/MVVM.
Grazie in anticipo per qualsiasi comprensione si può offrire.
Mi piace in quanto è un'opzione totalmente generica che lascia la shell per decidere come visualizzare gli elementi. Detto questo, ho avuto ulteriori riflessioni sul mio argomento e sono effettivamente passato a un'altra strada che documenterò come una risposta separata. Grazie. –
Ricordatevi che è possibile impostare 'MenuItemViewModel 'su MenuItems (controllabile o con voci secondarie). Dovrai creare un'interfaccia più specifica. Ma questo era un esempio. Divertiti. – SandRock