//This method will return the list of all controls of a specific type in our root layout
private IEnumerable<DependencyObject> GetControls(DependencyObject root)
{
List<DependencyObject> doList = new List<DependencyObject>();
doList.Add(root);
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(root); i++)
doList.AddRange(GetControls(VisualTreeHelper.GetChild(root, i)));
return doList;
}
//Here’s how we use it, LayoutRoot here is a Grid
private void OKButton_Click(object sender, RoutedEventArgs e)
{
var txtBoxes = GetControls(LayoutRoot).OfType<TextBox>();
foreach (var txtBox in txtBoxes)
{
lstTextBoxes.Add(txtBox);
}
this.DialogResult = true;
}
Advertisement
