逻辑树和视觉树 - zLulus/My_Note GitHub Wiki

摘抄自WPF的逻辑树和视觉树

逻辑树始终存在于WPF的UI中,不管UI是用XAML编写还是用代码编写。
WPF的每个方面(属性、事件、资源等等)都是依赖于逻辑树的。
比如伪XAML代码的例子:

<Window ......>
     <StackPanel>
      <Label>LabelText</Lable>
     </StackPanel>
</Window>

视觉树基本上是逻辑树的一种扩展逻辑树的每个结点都被分解为它们的核心视觉组件。
逻辑树的结点对我们而言基本是一个黑盒。而视觉树不同,它暴露了视觉的实现细节

不是所有的逻辑树结点都可以扩展为视觉树结点。只有从System.Windows.Media.Visual和System.Windows.Media.Visual3D继承的元素才能被视觉树包含。其他的元素不能包含是因为它们本身没有自己的提交(Rendering)行为。

示例代码

LogicalTreeAndVisualTree

参考资料

c# - through - wpf usercontrol get child controls
Finding Elements in the WPF Tree – Both Ways

⚠️ **GitHub.com Fallback** ⚠️