[c#] Find all controls in WPF Window by type

I'm looking for a way to find all controls on Window by their type,

for example: find all TextBoxes, find all controls implementing specific interface etc.

This question is related to c# .net wpf

The answer is


This should do the trick

public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
{
    if (depObj != null)
    {
        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
        {
            DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
            if (child != null && child is T)
            {
                yield return (T)child;
            }

            foreach (T childOfChild in FindVisualChildren<T>(child))
            {
                yield return childOfChild;
            }
        }
    }
}

then you enumerate over the controls like so

foreach (TextBlock tb in FindVisualChildren<TextBlock>(window))
{
    // do something with tb here
}

Similar questions with c# tag:

Similar questions with .net tag:

Similar questions with wpf tag: