Window/WPF2012. 8. 17. 15:07

VisualTree 를 순회하며 해당 타입과 이름이 일치하는 자식을 찾는 소스 코드입니다.

Template 에 유용하게 사용할 수 있습니다.

 

public static T FindChild<T>(this FrameworkElement obj, string name)

{

    DependencyObject dObj = obj as DependencyObject;

    T findChild = default(T);

   

    if (dObj != null)

    {

        int childCount = VisualTreeHelper.GetChildrenCount(dObj);

 

        for (int i = 0; i < childCount; i++)

        {

            DependencyObject childObj = VisualTreeHelper.GetChild(dObj, i);

            FrameworkElement child = childObj as FrameworkElement;

 

            if (child.GetType() == typeof(T) && child.Name == name)

            {

                findChild = (T)Convert.ChangeType(child, typeof(T));

                break;

            }

 

            findChild = child.FindChild<T>(name);

 

            if (findChild != null) break;

        }

    }

 

    return findChild;

}

 

'Window > WPF' 카테고리의 다른 글

Pixel Shader Effect in WPF  (0) 2015.02.26
[ WPF ] Word Cloud  (0) 2014.02.23
데이터 바인딩 ( Data Binding )  (0) 2012.07.24
WPF Media Player ( Design. GomPlayer )  (0) 2012.03.12
Brush ColorAnimation  (0) 2011.06.22
Posted by 열ㅇl