可视化树代表你界面上所有的渲染在屏幕上的元素。可视化树用于渲染,事件路由,定位资源(如果该元素没有逻辑父元素)等等。向上或者向下遍历可视化树可以简单的使用VisualTreeHelper和简单的递归方法。

那么为什么会有逻辑树和视觉树之分呢?你可能会说直接用视觉树不就行了,设计者为什么要搞出逻辑树这个东西呢?

逻辑树表示UI的核心结构。和XAML文件中定义的元素近乎相等, 排除掉内部生成的那些用来帮助渲染的可视化元素。 WPF用逻辑树来决定依赖属性,值继承,资源解决方案等。

因为逻辑树便于开发者理解,对于开发者友好的角度应该把界面渲染等不太关心的功能隐藏起来。