Звучит так, как будто вам нужна рекурсивная процедура, такая как GetTextBoxes ниже:
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);
}
}
}
}
Создание пустого списка TextBoxes. Вызовите GetTextBoxes, передав корневой элемент управления на вашей странице (в моем случае это this.LayoutRoot), и GetTextBoxes должен рекурсивно перебирать каждый элемент пользовательского интерфейса, являющийся потомком этого элемента управления, проверяя, является ли он TextBox (добавьте его в список) или панель, в которой могут быть свои потомки.
Надеюсь, это поможет. :)