Question

Je commence un nouveau projet dans Wpf et je cherche maintenant à utiliser Prism. Pour l'instant, j'essaie simplement de configurer la navigation de l'application à l'aide de Prism. Malheureusement, mon manque d'expérience avec ce framework rend la mise en route un peu difficile.

Pour être plus précis au sujet de mon premier défi, j'ai une application avec un "navigation / menu". région et un "principal" Région. La région de navigation sera la même pour toutes les différentes vues de régions principales et je définis donc le menu dans le fichier shell.xaml. Lorsque je clique sur un élément de menu, j'aimerais ajouter une vue à la région à l'aide de Prism. Premier; est-ce quelque chose que l'on utilisera généralement avec Prism? Si c'est le cas; Quelle est l'approche typique? Et je veux dire sur un niveau plus structurel ..

Mon impression est que Prism rendra mon application beaucoup plus évolutive à la fin, et je vois que j'en tire d’autres avantages - comme le conteneur IoC. Je voudrais donc l'utiliser - si je pouvais seulement passer à travers les premières étapes.

Était-ce utile?

La solution

J'ai un exemple qui utilise un peu plus le sens de l'ACG pour les modules contribuant à un menu et la façon d'ajouter des vues à une région. Cela devrait rendre les choses un peu plus claires.

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

J'espère que ça aide, Anderson

Autres conseils

Bumbuska,

Prism sera un excellent moyen d’atteindre cette fonctionnalité et il est assez facile à faire une fois que vous comprenez les principes.

La façon dont je vais le faire est d’ajouter des écouteurs d’événement à l’événement de démarrage de votre région principale. Lorsque vous sélectionnez votre élément dans le menu, vous déclenchez l'événement. Lorsque cela se produit, votre région principale gère l'événement et vous effacez la vue actuelle de la région principale. Créez ensuite la nouvelle vue que vous souhaitez utiliser et ajoutez-la.

Votre région principale devrait ressembler à ceci:

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();

}

J'espère que cela vous oriente dans la bonne direction. Faites-le moi savoir si vous avez besoin de plus d'informations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top