2011-03-01 4 views
0

Je crée une application de démonstration Prism 4 pour apprendre le nouveau cadre, en mettant l'accent sur la commutation de vue. L'application a plusieurs régions, dont l'une est un ItemsControl qui contient un ou plusieurs boutons du module actuellement actif.Prism 4: comment cacher des éléments dans ItemsControl?

J'inscris les boutons avec le gestionnaire de région dans la méthode Initilize() de chaque module. Voici le code d'enregistrement du premier module:

RegionManager.RegisterViewWithRegion("ButtonRegion", typeof(ModuleAButton1)); 
RegionManager.RegisterViewWithRegion("ButtonRegion", typeof(ModuleAButton2)); 

Le deuxième module enregistre ses boutons de la même manière. J'utilise RequestNavigate() pour basculer entre les deux modules.

Voici mon problème: Les boutons des deux modules sont visibles dans le ItemsControl, au lieu de simplement les boutons du module actif. J'ai considéré changer le ItemsControl à un ContentControl et mettre les boutons dans un StackPanel, mais pour des raisons que je ne vous ennuierai pas avec ici, cela ne fonctionnera pas pour moi. Ce que je dois faire est soit:

  • charge les boutons lorsqu'un module est activé, et les décharger quand je passe à l'autre module, ou

  • afficher les boutons lorsqu'un module est activé, et les cacher quand je passe à l'autre module.

Comment faire cela dans Prism 4? Merci de votre aide.

Répondre

2

J'ai trouvé ma réponse. Implémentez l'interface IRegionMemberLifetime sur la vue ou son modèle de vue. L'interface est constituée d'une seule propriété booléenne en lecture seule, KeepAlive. Si la propriété est définie sur true, la vue reste active après que l'utilisateur s'en est éloigné. Si la propriété est définie sur false, la vue sera déchargée. Voir le "Guide du développeur de Microsoft Prism" (Ver 4), p. 121.

Questions connexes