65.9K
CodeProject is changing. Read more.
Home

Walk up the Visual Tree

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2 votes)

Apr 26, 2010

CPOL
viewsIcon

21961

Introduction The following snippet provides a generic method to walk up the visual tree of Silverlight in order to find an element of a given type. It will return the first found item of said type, or null if the search ends at the visual tree root without any results.  Code // walk up the...

Introduction

The following snippet provides a generic method to walk up the visual tree of Silverlight in order to find an element of a given type. It will return the first found item of said type, or null if the search ends at the visual tree root without any results.  

Code

// walk up the visual tree to find object of type T, starting from initial object
public static T FindUpVisualTree<T>(DependencyObject initial) where T : DependencyObject
{
    DependencyObject current = initial;
 
    while (current != null && current.GetType() != typeof(T))
    {
         current = VisualTreeHelper.GetParent(current);
    }
    return current as T;   
}

Usage 

Find the first Grid containing the Button (x:Name="button01"), regardless if the Button is located directly in a Grid or nested within some other containers.   

Grid gridContainingButton = FindUpVisualTree<Grid>(button01);

References  

Understanding the Visual Tree and Logical Tree in WPF by Josh Smith