The LayoutTreeHelper is a helper class that provides utility methods for iterating through elements of visual and logical trees and searching nodes.
For accessing the visual parents of an object that is placed in a visual or logical tree, the LayoutTreeHelper provides the LayoutTreeHelper.GetVisualParents function.
public static IEnumerable<DependencyObject> GetVisualParents(
DependencyObject stopNode = null
This function returns a LINQ compatible collection. It allows you to use the wide capabilities of LINQ methods to access the required nodes of the visual and logical trees.
For instance, to get a specific parent Grid, you can use the following code.
var obj = LayoutTreeHelper.GetVisualParents(PART_Button as DependencyObject)
.FirstOrDefault(x => x.Name == "PART_Grid");
For accessing the visual children of an object, the LayoutTreeHelper provides the LayoutTreeHelper.GetVisualChildren function.
public static IEnumerable<DependencyObject> GetVisualChildren(DependencyObject parent)
Similar to GetVisualParents, this function also returns a LINQ compatible collection. Thus, you can also use LINQ extension methods to obtain the required child nodes.
Below is a sample code snippet that illustrates how to obtain the child CheckBox named as PART_CheckBox by using the GetVisualChildren function.
var obj = LayoutTreeHelper.GetVisualChildren(PART_Grid as DependencyObject)
.FirstOrDefault(x => x.Name == "PART_CheckBox");