Exemplo n.º 1
0
        public static IEnumerable <T> FindVisualChildren <T>(this DependencyObject depObj) where T : DependencyObject
        {
            if (depObj != null)
            {
                depObj.ApplyTemplateRecursively();

                for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
                {
                    DependencyObject child = VisualTreeHelper.GetChild(depObj, i);

                    child.ApplyTemplateRecursively();

                    if (child != null && child is T)
                    {
                        yield return((T)child);
                    }

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