Méthode générique pour trouver tous les contrôles de zone de texte dans Silverlight
J'ai plusieurs contrôles Silverlight sur une page et souhaitez interroger tous les mécanismes de contrôle de type zone de texte et le travail.
Maintenant Silverlight forme, je travaille sur pourrait avoir plus de contrôles de zone de texte ajouté. Alors, quand je test pour voir si un contrôle de zone de texte a une valeur, que je pouvais faire:
if (this.TextBox.Control.value.Text() != String.Empty)
{
//do whatever
}
mais je préfère avoir si souple que je peux l'utiliser sur n'IMPORTE quel Silverlight forme quel que soit le nombre de contrôles de zone de texte que j'ai.
Des idées sur comment je pourrais faire?
OriginalL'auteur coson | 2009-03-02
Vous devez vous connecter pour publier un commentaire.
Il sonne comme vous avez besoin d'un récursive de routine comme GetTextBoxes ci-dessous:
Instancier une liste vide de zones de texte. Appel GetTextBoxes, en passant dans la racine de contrôle sur votre page (dans mon cas, c'est cela.LayoutRoot), et GetTextBoxes devrait récursivement boucle sur chaque élément de l'INTERFACE utilisateur est un descendant de ce contrôle, des tests pour voir si c'est une zone de texte (ajouter à la liste), ou un panneau, qui pourraient avoir des descendants de son propre répéter à travers.
Espère que ça aide. 🙂
Je ne pense pas que vous pouvez jeter un
ScrollViewer
comme unPanel
, donc si vous pourriez avoir besoin pour obtenir de l'enfant de l'un, vous aurez besoin d'ajouter un autreelse
.OriginalL'auteur Scott Ferguson
J'ai déjà été confronté à ce problème et de le notifier ici : http://megasnippets.com/en/source-codes/silverlight/Get_all_child_controls_recursively_in_Silverlight
Vous avez ici une méthode générique de trouver de façon récursive dans la VisualTree toutes les zones de texte:
Utiliser cette méthode comme ceci pour trouver toutes les zones de texte:
OriginalL'auteur G. Ghez
À partir de votre plus haut du panneau, vous pouvez le faire (ma grille est appelée ContentGrid)
Toutefois, cela ne trouverez que des zones de texte qui sont immédiats des enfants. Une sorte de récursivité comme ci-dessous pourrait l'aider, mais je pense que il doit y avoir une meilleure façon.
Que voulez-vous dire? L' .OfType extension de la méthode ne retourne que les contrôles du type spécifié. Et ils vont être tapé correctement. Quelles informations allez-vous après?
OriginalL'auteur Ray
A pris Scott idée de départ et élargi afin qu'il
Code:
OriginalL'auteur Robert MacLean
La même logique pour les idées ci-dessus pour également gérer les commandes avec un attribut "Content" comme TabItems et Scrollviewers où les enfants pourraient être intégrées à un niveau inférieur. Trouve tous les enfants:
OriginalL'auteur Mike