Use this recursive function:
List<UIElement> GetAllChildren(Panel c)
{
List<UIElement> list = c.Children.Cast<UIElement>().ToList();
foreach( var elem in list.OfType<Panel>())
list.AddRange(GetChildren(elem));
return list;
}
No you can say:
foreach (var item in GetAllChildren(check_boxes_layout).OfType<CheckBox>())
{
//...
}