有时候想查看一下控件可视化树结构,去查看”C:\Program Files\Microsoft SDKs\Windows Phone\v7.1\Design“目录下的System.Windows.xaml文件。但这个文件有比较麻烦,而且那个文件里的代码又比较长,看起来很繁琐。可以使用一下代码来查看控件的可视化树结构:
/// <summary>
/// 查看可视化树的结构
/// </summary>
/// <param name="parent">控件</param>
/// <param name="indent">初始值设置为0</param>
void DumpVisualTree(DependencyObject parent, int indent)
{
TextBlock txtblk = new TextBlock();
// 模拟树层次结构显示结果.
txtblk.Text = String.Format("{0}{1}", new string(' ', 4 * indent), parent.GetType().Name);
// dumpTreeItemsControl是一个ItemsControl用于显示可视化树.
dumpTreeItemsControl.Items.Add(txtblk);
int numbChild = VisualTreeHelper.GetChildrenCount(parent);
for (int childIndex = 0; childIndex < numbChild; childIndex++)
{
// 递归查找该控件的Child.
DependencyObject child = VisualTreeHelper.GetChild(parent, childIndex);
DumpVisualTree(child, indent + 1);
}
}