Silverlight’s how to: get child elements
2010, Jan 12
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; } } }