public MainWindow()
{
InitializeComponent();
Console.WriteLine("LogicalTree Structure:");
EnumLogicalTree(0, this);
}
protected override void
OnContentRendered(EventArgs e)
{
base.OnContentRendered(e);
Console.WriteLine("VisualTree Structure:");
EnumVisualTree(0, this);
}
//遍历视觉树
public void EnumVisualTree(int Ident, Visual
visualObj)
{
for (int i
= 0; i < VisualTreeHelper.GetChildrenCount(visualObj);
i++)
{
//接收特定索引的子元素
Visual childVisual =
(Visual)VisualTreeHelper.GetChild(visualObj, i);
Console.WriteLine(new
string(' ', Ident) + childVisual);
EnumVisualTree(Ident + 1,
childVisual);
}
}
//遍历逻辑树
public void EnumLogicalTree(int Ident, object
logObj)
{
if
(!(logObj is DependencyObject))//对象必须派生自DependencyObject对象
return;
foreach
(object childLogical in LogicalTreeHelper.GetChildren(logObj as
DependencyObject))
{
Console.WriteLine(new
string(' ', Ident) + childLogical);
EnumLogicalTree(Ident + 1,
childLogical);
}
}