Il semble que vous avez besoin d'une routine récursive comme GetTextBoxes ci-dessous:
void Page_Loaded(object sender, RoutedEventArgs e)
{
// Instantiate a list of TextBoxes
List<TextBox> textBoxList = new List<TextBox>();
// Call GetTextBoxes function, passing in the root element,
// and the empty list of textboxes (LayoutRoot in this example)
GetTextBoxes(this.LayoutRoot, textBoxList);
// Now textBoxList contains a list of all the text boxes on your page.
// Find all the non empty textboxes, and put them into a list.
var nonEmptyTextBoxList = textBoxList.Where(txt => txt.Text != string.Empty).ToList();
// Do something with each non empty textbox.
nonEmptyTextBoxList.ForEach(txt => Debug.WriteLine(txt.Text));
}
private void GetTextBoxes(UIElement uiElement, List<TextBox> textBoxList)
{
TextBox textBox = uiElement as TextBox;
if (textBox != null)
{
// If the UIElement is a Textbox, add it to the list.
textBoxList.Add(textBox);
}
else
{
Panel panel = uiElement as Panel;
if (panel != null)
{
// If the UIElement is a panel, then loop through it's children
foreach (UIElement child in panel.Children)
{
GetTextBoxes(child, textBoxList);
}
}
}
}
Instantiate une liste vide de TextBoxes. Appelez GetTextBoxes, en passant le contrôle racine sur votre page (dans mon cas, c'est this.LayoutRoot), et GetTextBoxes doit parcourir récursivement chaque élément de l'interface utilisateur qui est un descendant de ce contrôle, test pour voir s'il s'agit d'un TextBox (ajoutez-le à la liste), ou un panneau, qui pourrait avoir des descendants de son propre à recurse à travers.
Espérons que ça aide. :)
Merci beaucoup! C'est vraiment ce que je cherchais. Maintenant, j'ai juste besoin de voir si je peux la classe UIElement pour extraire plus d'informations. (ie Contrôlez x: Nom si possible) – coson
Je ne pense pas que vous puissiez lancer un 'ScrollViewer' en tant que' Panel', donc si vous avez besoin d'un enfant, vous devrez en ajouter un autre 'else' . – mbomb007