Domanda

Sto iniziando un nuovo progetto in Wpf e ora sto cercando di usare Prism. Per ora sto semplicemente cercando di impostare la navigazione dell'applicazione usando Prism. Purtroppo la mia mancanza di esperienza con il framework rende un po 'difficile iniziare ..

Per essere più precisi sulla mia prima sfida, ho un'applicazione con un menu di navigazione / menu " regione e una "principale" regione. La regione di navigazione sarà la stessa per tutte le diverse viste della regione principale e quindi definisco il menu in shell.xaml. Quando faccio clic su una voce di menu, vorrei aggiungere una vista alla regione usando Prism. Primo; è qualcosa per cui in genere si utilizzerà Prism? Se è così; qual è l'approccio tipico? E intendo a livello più strutturale ..

La mia impressione è che Prism renderà la mia applicazione molto più scalabile alla fine e vedo che ne trarrò altri vantaggi, come il contenitore IoC. Quindi vorrei usarlo - se solo potessi superare i primi passi ..

È stato utile?

Soluzione

Ho un campione che utilizza un po 'più di CAG per i moduli che contribuiscono a un menu e come aggiungere visualizzazioni a una regione. Dovrebbe rendere le cose un po 'più chiare.

http://dl.getdropbox.com/u/376992/CAGMenus.zip

Spero che questo aiuti, Anderson

Altri suggerimenti

Bumbuska,

Prism sarà un ottimo modo per raggiungere questa funzionalità ed è abbastanza facile da fare una volta che hai compreso i principi.

Il modo in cui lo farò è aggiungere listener di eventi nell'evento di avvio della tua regione principale. Quando selezioni il tuo oggetto nel menu, attivi l'evento. Quando ciò accade, la tua Regione principale gestirà l'evento e cancellerai la vista corrente dalla Regione principale. Quindi crea la nuova vista che desideri utilizzare e aggiungila.

La tua regione principale dovrebbe assomigliare a questa:

public void Initialize()
{
    Events.PageEvents.ClickedEvent1 ce1 = this.eventAggregator.GetEvent<Events.PageEvents.ClickedEvent1>();
    ce1.Subscribe(LoadView, ThreadOption.UIThread, true);
}

private void LoadView(Events.HomePageEvents.Clicked clicked1)
{
    IRegion mainRegion = RegionManager.Regions["MainRegion"];
    foreach (object view in new List<object>mainRegion.Views))
    {
        RegionManager.Regions["MainRegion"].Remove(view);
    }

    IModule firstModule = Container.Resolve<Modules.FirstModule>();
    firstModuleModules.Initialize();

}

Spero che ti indichi nella giusta direzione. Per favore fatemi sapere se avete bisogno di ulteriori informazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top