Righty oh maintenant je crois que ive mis cette application à droite mais corrigez-moi si je me trompe, pour l'amour simple j'ai dans mon bootstrapper 3 modules chargés, l'un est une navigation module, et deux autres les vues.Les événements ne tirez pas à travers les modules (prisme, MVVM, Silverlight C#)
Indépendamment du code si je charge les modules et dans la méthode d'initialisation, ajoutez-les à une région qui fonctionne très bien, mais d'un certain contrôle.
Maintenant, dans le modèle de vue de la navigation i ont un agrégateur d'événement qui publie un événement (classe qui hérite de EventArgs si c'est important) les deux autres modules ont souscrit à cet événement, mais ni le recevoir,
/// <summary>
/// Carries the out menu item selection methods.
/// </summary>
/// <param name="e">The <see cref="TMBL.Web.TMBLCore.Controls.Assets.NavigationViewSelectionEventArgs"/> instance containing the event data.</param>
public void CarryOutMenuItemSelectionMethods(NavigationViewSelectionEventArgs e)
{
_eventAggregator.GetEvent<NavigationMenuItemSelectedEvent>().Publish(e);
}
dans la navigation ViewModel, puis souscrits dans le module de nouvelles
_eventAggregator.GetEvent<NavigationMenuItemSelectedEvent>().Subscribe(NavigationMenuReturnedEvent,
ThreadOption.UIThread);
Semblait assez simple, je peux souscrire à cet événement dans mon module de navigation et il capte, il suffit d'aller wont l'extérieur du module, ce qui fait un besoin faire pour y parvenir?
L'agrégateur d'événements est également injecté dans le constructeur de modules via l'injection de dépendances, puis stocké et transmis via des constructeurs aux modèles viewsand view (voir d'abord les vues). Alors que im ici, je ne sais pas si cela est la cause du problème ou non, mais est-ce mal d'avoir le magasin de modules d'une instance de aggrégateur de l'événement et le transmettre de cette façon, par exemple
_displayNewsView = new DisplayNewsView(new DisplayNewsViewModel(_eventAggregator));
Ou si l'agrégateur d'événements se aux viewmodels d'une manière différente?
Merci pour votre temps
Okay j'ai réussi à le retrouver après quelques tentatives ratées, quand j'ai enregistré l'instance de l'agrégateur d'événements que j'avais pour le dire, traitez-le comme un singleton Container.RegisterType (nouveau ContainerControlledLifetimeManager()); http://blogs.msdn.com/b/francischeung/archive/2008/06/02/decoupled-communication-with-prism-event-aggregation.aspx –
Lee
Aussi désolé stackoverflow m'a signé dans un compte temporaire plutôt que le mien et Je ne peux pas savoir comment y revenir pour accepter votre réponse, les excuses, merci beaucoup – Lee
email [email protected] et ils devraient être en mesure de fusionner les 2 comptes. – aqwert