Поделиться через


VisualTreeHelper.GetChild(DependencyObject, Int32) Метод

Определение

Используя предоставленный индекс, получает определенный дочерний объект предоставленного объекта путем изучения визуального дерева.

public:
 static DependencyObject ^ GetChild(DependencyObject ^ reference, int childIndex);
 static DependencyObject GetChild(DependencyObject const& reference, int const& childIndex);
public static DependencyObject GetChild(DependencyObject reference, int childIndex);
function getChild(reference, childIndex)
Public Shared Function GetChild (reference As DependencyObject, childIndex As Integer) As DependencyObject

Параметры

reference
DependencyObject

Объект, содержащий дочернюю коллекцию.

childIndex
Int32

int

Индекс запрошенного дочернего объекта в эталонной дочерней коллекции.

Возвращаемое значение

Дочерний объект, на который ссылается childIndex.

Примеры

Ниже приведен пример служебной функции, которая может копировать список дочерних элементов определенного типа из визуального дерева. В нем используются базовые методы обхода GetChildrenCount и GetChild. Он использует рекурсию, чтобы элементы можно было найти независимо от уровня вложенности в промежуточных контейнерах. Он также использует метод расширения IsSubclassOf из System.Reflection , который расширяет сравнение типов, чтобы рассматривать подтипы как совпадение для типа.

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);
    }
}

Применяется к