I’ve started studing Silverlight a while ago, I don’t think I’ll do something special or some amazing eye-candy application… I just want to see how it works.

Well….I don’t like it. I mean, it’s fantastic, allows you to do many wonderful things….but I do really hate all that xaml thing.  I still have to try some tools  like Expression Blend and Sketchflow , so I feel free to change my mind.

Anyway, during my code-nights I found this snippet on a forum, and I think it’s very useful for who (like me) prefer C#-coding over the xml-way-of-life. In a nutshell it’s an extension method  that allows you to recursively get a list of children of a specific type from an element. Here you go!

public static class Extensions
 {
        public static IEnumerable<T> GetChildren<T>(this FrameworkElement element) where T : FrameworkElement
        {
            int count = VisualTreeHelper.GetChildrenCount(element);
            for (int i = 0; i < count; i++)
            {
                var child = VisualTreeHelper.GetChild(element, i) as FrameworkElement;
                if (child is T) yield return (T)child;          
                var children = child.GetChildren<T>();
                foreach (T grandchild in children)  
                     yield return grandchild;
            }
        }
 }