2010-05-19 5 views
1

J'ai deux ou trois contrôles TextBlock et tous appellent un seul événement. Mais je dois câbler tous les utiliser invidividuallyUn événement commun pour tous les contrôles dans Silverlight

TextBlock1.MouseMove += new MouseEventHandler(TextBlock_MouseMove);  
TextBlock2.MouseMove += new MouseEventHandler(TextBlock_MouseMove); 
TextBlock3.MouseMove += new MouseEventHandler(TextBlock_MouseMove); 

Est-il possible que je peux appliquer le mouvement de la souris à tous TextBlock sans les câbler un par un

+0

Il y a un certain nombre de variations à ce problème que votre question ne pas lever l'ambiguïté. Y a-t-il d'autres TextBlocks présents dans l'arborescence visuelle sur lesquels vous ne voulez pas que l'événement se déclenche (y compris les TextBlocks qui peuvent faire partie des modèles d'autres contrôles)? Est-ce que ces TextBlocks ont un parent commun? Est-ce vraiment un "couple" si oui, pourquoi est-ce un problème de toute façon? – AnthonyWJones

Répondre

1

Vous pouvez boucler à travers tous les contrôles enfants du former et ajouter le gestionnaire d'événements à chacun des blocs de texte que vous trouvez. Si ces TextBlocks sont dans la même grille/whatever, le code devrait ressembler un peu comme ceci:

foreach(TextBlock vControl in GridName.Children) 
{ 
    vControl.MouseMove += new MouseEventHandler(TextBlock_MouseMove); 
} 

Maintenant, je pourrais avoir la partie « foreach » de mal. Il peut être nécessaire de transtyper à partir d'un objet en fonction de leur stockage dans la collection Children. Bien que ce soit bon si vous vous retrouvez avec beaucoup de zones de texte, vous pouvez également styler les zones de texte pour émettre une commande au déplacement de la souris, mais cela nécessite un tas de code à l'avance, pour le faire plus facilement.

+0

Ce code suppose que tous les TextBlocks d'intérêt sont des enfants directs d'un panneau spécifique et que tous les TextBlocks du panneau sont intéressants. – AnthonyWJones

Questions connexes