2009-08-30 9 views
1

Est-ce que quelqu'un sait comment obtenir le contrôle associé à une région dans Prism.Comment obtenir le contrôle d'une région dans Prism

Par exemple, si je le code ci-dessous pour enregistrer une région

RegionManager.SetRegionName (Outlook.navigationContainer, "navigationContainer");

Comment puis-je obtenir le contrôle Outlook.navigationContainer via le nom "navigationContainer"?

Remercions les tas.

Répondre

0

Je ne pense pas que vous puissiez facilement obtenir le contrôle associé via le nom de la région.

La méthode SetRegionName définit uniquement la propriété DependencyProperty "RegionNameProperty" sur le contrôle spécifié. La seule chose que vous pouvez faire est de récupérer le nom lorsque vous avez le contrôle.

1

Les régions sont censées éliminer les spécificités du contrôle de région de votre part. Pourquoi avez-vous besoin d'obtenir le contrôle?

+0

Salut Kent, Je suis d'accord avec cependant ce que vous dites, si j'ai des fonctionnalités complexes telles que la modification d'une propriété sur le contrôle de la région en fonction de ce qui est injecté.La seule façon de voir que cela peut être réalisé est d'exposer le contrôle ou au moins son interface. Suggestions? –

1

Pour répondre à votre question:

Vous pourriez probablement créer quelque chose qui suit cette utilisation d'un comportement personnalisé région. Les détails de RegionBehaviors peuvent être trouvés ici: http://msdn.microsoft.com/en-us/library/dd458944.aspx

Vous créeriez simplement un dictionnaire qui suivrait le nom de région et le contrôle associé, puisque vous avez accès aux deux depuis un Comportement de région.

Si vous avez besoin d'accéder au contrôle au moment où une vue est étant ajouté à la région, vous voudrez utiliser un adaptateur de région à cet effet (détails sur le même lien ci-dessus).

Cependant, je suis d'accord à 150% avec Kent ici que je sens l'odeur que vous faites quelque chose que vous ne devriez pas. Si vous essayez de personnaliser la mise en page ou de créer des animations/etc, vous devriez vraiment vous concentrer sur une stratégie qui ne nécessite pas de casser l'abstraction que les régions vous donnent. Quelque chose d'aussi simple qu'un style avec des déclencheurs de données pourrait vous donner ce que vous recherchez et ne vous obligerait pas à en savoir trop sur le conteneur à partir du code qui ajoute les vues à la région.

+0

Salut, je suis d'accord avec ce que vous dites, cependant, que faire si j'ai des fonctionnalités complexes telles que la modification d'une propriété sur le contrôle de la région en fonction de ce qui est injecté. La seule façon de voir que cela peut être réalisé est d'exposer le contrôle ou au moins son interface. Des suggestions? –

+1

Vous pouvez utiliser un adaptateur de région pour y parvenir, mais il semble étrange que vous ayez besoin de changer le conteneur en fonction du contenu sans que ce soit un style, plutôt que quelque chose que vous faites impérativement. Je suggère d'explorer la possibilité d'utiliser un style ici avec DataTriggers. –

0

ThinkAbout,

Si vous souhaitez modifier une propriété sur un module qui est injecté dans une région, la meilleure façon de le faire est d'utiliser soit un événement routé ou une commande en déroute en fonction de votre situation.

La façon dont je le fais est, lorsque le module est initialisé, je souscris à des événements pour les propriétés qui doivent être modifiées. Si un autre module du système doit modifier cette propriété, je déclenche simplement l'événement.

J'espère que cela vous met sur la bonne voie.

Cordialement Cornelius Kruger

Questions connexes