一、定义上区分
1、添加元素的分类,称为逻辑树。解析:用window或者是application向下定位到组成界面的基本控件元素,就是逻辑树。
2、视觉树是逻辑树的拓展版本。解析:把逻辑树上的控件元素进行细分到更加仔细的构成部分,便是视觉树。
因此,有定义上看,逻辑树是框架描述意义上的,视觉树,填充了框架需要的所有细节的细节描述。视觉树的细节描述必须是在逻辑树的基础上的,不可能出现视觉树和逻辑相互独立的情况。
二、在视图上描述区分:
1、简单的window代码:
<Window>
<Button Content="Click me"/>
</Grid>
</Window>
2、上述代码的逻辑树:
3、上述代码的视觉树
三、逻辑树和视觉树作用:
理解
WPF
中的
视觉
树
和
逻辑
树
Understanding the Visual Tree and Logical Tree in
WPF
这篇文章讨论
WPF
中
视觉
树
和
逻辑
树
的细微差别。同时提供了一个小程序供读者稍后分析。如果你已经对着两个概念完全不熟悉,
我建议你先读SDK文档中的这篇文章“URL”。
目前SDK文档中关于
视觉
树
和
逻辑
树
的介绍还不是很完全。从我一开始接触WP
WPF
中可视化
树
和
逻辑
树
的
区别
是什么?
WPF
用户界面的元素是分层相关的。 这种关系称为
逻辑
树
。 一个元素的模板由多个
视觉
元素组成。 这棵
树
被称为 VisualTree。
逻辑
树
描述了用户界面元素之间的关系。
逻辑
树
负责:
继承 DependencyProperty 值
解析 DynamicResources 引用
查找绑定的元素名称
转发路由事件
视觉
树
包含所有
逻辑
元素,包括每个元素模板的所有
视觉
元素。
视觉
树
负责:
渲染
视觉
元素
传播元素不透明度
传播布局和渲染变换
传播 IsEnabled
逻辑
树
与
视觉
树
属于
WPF
的基本概念,学过
WPF
或者Silverlight的朋友一定会对其有所耳闻,这篇文章将来探讨
逻辑
树
与
视觉
树
的特质以及两者的
区别
WPF
Inspector工具介绍
WPF
Inspector是一个新的
WPF
辅助工具,我们可以通过这个工具来观察
WPF
程序生成的
逻辑
树
与
视觉
树
观察
逻辑
树
与
视觉
树
左侧为
视觉
树
,右侧为
逻辑
树
1、
WPF
启动程序的根元素均为Application。2、
逻辑
树
与XAML的布局结构是相同的。3、
视觉
树
是根据
控件
的模板来呈现的,我们很难猜测
视觉
树
的结
WPF
中有两个重要的
树
结构:
逻辑
树
和
视觉
树
。它们的作用分别是:
1.
逻辑
树
:
WPF
控件
的
逻辑
结构被组织成一个
树
形结构,这个
树
形结构被称为
逻辑
树
。它描述了
WPF
控件
之间的
逻辑
关系,例如父子关系、兄弟关系等。
逻辑
树
是在
控件
的实例化
过程
中自动生成的,它包含了所有
WPF
控件
及其属性、事件、命令等信息,是
WPF
控件
实现功能的基础。
2.
视觉
树
:
WPF
控件
的可视化结构被组织成一个
树
形结构,这个
树
形结构被称为
视觉
树
。它描述了
WPF
控件
在屏幕上的可视化关系,例如
控件
的位置、大小、样式、布局等。
视觉
树
是在
逻辑
树
生成之后,通过对
逻辑
树
中的
控件
进行测量、排列、渲染等操作生成的,它包含了所有
WPF
控件
及其对应的可视化信息,是
WPF
控件
在屏幕上显示的基础。
逻辑
树
和
视觉
树
是紧密关联的,它们之间存在一一对应的关系。
控件
在
逻辑
树
中的位置决定了它在
视觉
树
中的位置,
逻辑
树
中的属性、命令等信息会影响到
视觉
树
中
控件
的样式、布局等方面。因此,了解
逻辑
树
和
视觉
树
的关系,可以更好地理解
WPF
控件
的工作原理,从而更好地进行
WPF
应用程序开发。