■ 소스 객체의 비주얼 트리에서 지정 타입 객체 찾기

----------------------------------------------------------------------------------------------------

using System.Collections.Generic;

using System.Windows;

using System.Windows.Media;

 

#region 소스 객체의 하위 비주얼 트리에서 지정 타입 객체 찾기 - FindObjectInVisualTree<T>(source)

 

/// <summary>

/// 소스 객체의 하위 비주얼 트리에서 지정 타입 객체 찾기

/// </summary>

/// <typeparam name="TFind">찾을 타입</typeparam>

/// <param name="source">소스 의존 객체</param>

/// <remarks>소스 의존 객체와 소스 의존 객체의 하위 비주얼 트리에서 지정 타입의 객체를 찾는다.</remarks>

/// <returns>해당 타입 객체</returns>

public static TFind FindObjectInVisualTree<TFind>(DependencyObject source) where TFind : class

{

    Queue<DependencyObject> queue = new Queue<DependencyObject>();

 

    queue.Enqueue(source);

 

    while(queue.Count > 0)

    {

        DependencyObject current = queue.Dequeue();

 

        TFind instance = current as TFind;

 

        if(instance != null)

        {

            return instance;

        }

 

        for(int i = 0; i < VisualTreeHelper.GetChildrenCount(current); i++)

        {

            queue.Enqueue(VisualTreeHelper.GetChild(current, i));

        }

    }

 

    return null;

}

 

#endregion

----------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요