Visual Layer Overview(2)--Visual Tree
来源:互联网 发布:和讯软件下载 编辑:程序博客网 时间:2024/05/04 15:35
visual tree包含一个应用UI中所有的可视化的元素(visual elements)。既然一个可视化元素中包含永久化的描画信息,可以认为visual tree是一个包含组成显示设备上输出的所有渲染信息的场景图。这棵树是应用直接创建的可视化元素的一个集合,无论使用代码创建的还是用标记语言创建的。visual tree还包括通过模版扩展的元素。
下面的例子定义了一个StackPanel元素
XAML
<StackPanel>
<Label>User name:</Label>
<TextBox />
<Button Click="OnClick">OK</Button>
</StackPanel>
如果枚举组成StackPanel元素的可见对象的例子,可以得到下图所示的层次结构:
Rendering Order
Root visual 是visual tree层次结构中最顶层的元素,在大多数应用程序中,root visual的基类通常是Window或者NavigationWindow。可是,如果在Win32应用中hosting 可见对象的话,root visual就是Win32 window中最顶层的元素。For more information, see Hosting Visual Objects in a Win32 Application.
Relationship to the Logical Tree
Windows Presentation Foundation中的logical tree表示应用程序运行时的元素。虽然你不会直接的操作这个树,但是这种对应用的视角对于理解property inheritance 和event routing是很有帮助的。与visual tree不同,logical tree 可以表示不可见的data objects,例如:ListItem。在大多数情况下,logical tree几乎就是应用程序标记语言的近似映射。下面的代码显示了一个在标记语言中定义的DockPanel元素。
XAML
<DockPanel>
<ListBox>
<ListBoxItem>Dog</ListBoxItem>
<ListBoxItem>Cat</ListBoxItem>
<ListBoxItem>Fish</ListBoxItem>
</ListBox>
<Button Click="OnClick">OK</Button>
</DockPanel>
如果要枚举组成DockPanel的logical objects的话,将得到下图的层次结构
visual tree 和logical tree都与当前的应用的元素同步,反映任何元素的增加,删除或者修改。但是它们显示了应用的不同视图。与visual tree, logical tree并没有扩展控件的ContentPresenter元素。这意味着并没有logical tree 和 visual tree 之间的一一对应。实际上,在同一对象上调用LogicalTreeHelper's GetChildren me方法和VisualTreeHelper's GetChild 方法,将得到不同的结果。
For more information on the logical tree, see Element Tree.
- Visual Layer Overview(2)--Visual Tree
- Visual Layer Overview(3)--VisualTreeHelper Class
- Visual Layer Overview(1)--Role of the Visual Object
- Visual Layer Overview(4)--Other Visual Object Classes
- Visual Layer Overview(5)Hit Testing in the Visual Layer
- Visual Layer Overview(6)Using DrawingVisual Objects
- CSS Mastery摘要(2)--Visual Formatting Model Overview
- Visual Studio 2005 Team System: Overview
- Visual Studio 2005 Product Line Overview
- Visual Studio 2005 Product Line Overview
- Visual Studio Automation and Extensibility Overview
- Visual Studio® 2005 Team System Overview
- VsVim -- VIM emulation layer for Visual Studio
- Visual
- Understanding the Visual Tree and Logical Tree in WPF
- Silverlight 2 Visual Essentials
- Visual Studio Visual C++
- Visual Studio 2010 架构图之三—层图(Layer Diagram)
- 公布一下工资管理系统中核心部分工资计算的代码
- asp.net中XML文件作为中间件进行数据交换功能的实现(c#,sql2000)
- 马坦故事连载五--两头会响的叫子
- datalist或datagrid的数据源是数组的时候怎么写绑定?
- 给青年一代的11点忠告——Bill Gates
- Visual Layer Overview(2)--Visual Tree
- C#简单命名指南
- 文件访问通知
- Opendocument 问与答 (FAQ)
- ASP.NET常用控件之1:用于选择日期的TextBox控件
- 与人相处的24条黄金法则
- Start with Ajax.NET
- 字符串加密解密函数
- SPL升级到3.2了,完全透明支持MySQL数据库了(更新了一下)!