VisualTreeHelper.GetChildrenCount(DependencyObject) VisualTreeHelper.GetChildrenCount(DependencyObject) VisualTreeHelper.GetChildrenCount(DependencyObject) VisualTreeHelper.GetChildrenCount(DependencyObject) Method

Definition

Returns the number of children that exist in an object's child collection in the visual tree.

public : static int GetChildrenCount(DependencyObject reference)
static int32_t GetChildrenCount(DependencyObject reference) const;
public static int GetChildrenCount(DependencyObject reference)
Public Shared Function GetChildrenCount(reference As DependencyObject) As int

Parameters

reference
DependencyObject DependencyObject

The source visual.

Returns

int int

The number of visual children for the provided source visual.

Examples

Here's an example of a utility function that can copy a list of child elements of a particular type from within a visual tree. It uses the basic traversal methods GetChildrenCount and GetChild. It uses recursion so that elements can be found no matter what level of nesting within intermediate containers exists. It also uses an IsSubclassOf extension method from System.Reflection that extends the type comparison to consider subtypes as a match for a Type.

internal static void FindChildren<T>(List<T> results, DependencyObject startNode)
  where T : DependencyObject
{
    int count = VisualTreeHelper.GetChildrenCount(startNode);
    for (int i = 0; i < count; i++)
    {
        DependencyObject current = VisualTreeHelper.GetChild(startNode, i);
        if ((current.GetType()).Equals(typeof(T)) || (current.GetType().GetTypeInfo().IsSubclassOf(typeof(T))))
        {
            T asType = (T)current;
            results.Add(asType);
        }
        FindChildren<T>(results, current);
    }
}