//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&lt;TextBox&gt;();
foreach (var txtBox in txtBoxes)
{
lstTextBoxes.Add(txtBox);
}

this.DialogResult = true;
}

Advertisement