Visual Layer Overview(2)--Visual Tree

翻译 2006年06月09日 17:36:00
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>
如果要枚举组成DockPanellogical 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 C++系列]窗口控件 - 4.7 Tree Ctrl

4.7 Tree Ctrl 树形控件TreeCtrl和下节要讲的列表控件 ListCtrl在系统中大量被使用,例如Windows资源管理器就是一个典型的例子。[Visual C++系列]窗口控件...
  • bbdxf
  • bbdxf
  • 2011年08月06日 19:22
  • 1404

目标跟踪系列四:Modeling and Propagating CNNs in a Tree Structure for Visual Tracking (2016年8月)

文章是2016年8月放到arvix上的,看格式应该是投到CVPR2017了,Korea的POSTECH这个团队做的,之前比较有名的还有MDNet和CNN-SVM,相信大家应该不陌生哈。 这篇文章的简称...

Linq to Visual Tree-可视化树的类Linq查询扩展API

这篇博文主要是介绍了利用Linq API去查询WPF/Silverlight的可视化树。你可能在其他博客上看到了一些利用Linq查询可视化树的方法,但是我这里介绍的方法特殊在于它能够生成树状结构查询而...

An Overview of Visual Studio 2008

  • 2007年11月13日 21:34
  • 394KB
  • 下载

Visual Studio 2015,Angular2进行开发快速入门

原文出处:http://blog.csdn.net/feiying008/article/details/52996016 本文介绍了在 Visual Studio 2015 的 ASP...

Angularjs2+ASP.NET MVC Core in Visual Studio 2015开发环境安装说明

安装准备首先安装asp.net mvc core项目模板,没有安装之前创建项目的时候看到的是这个样子 点击确定即可开始下载安装包,写此文章的时候自动下载的版本是 DotNetCore.1.0.1-...

Matlab R2014+visual studio 2013 混合编程(2)

看了一篇配置 Visual studio 的博客 写的简单明了,前面已经讲了如何安装Matlab R2014a,visual studio 2013 这里不再说明 先贴上博客的代码 代码一: ...

f2py的语法(备查)-使用Intel Visual Fortran Compiler编译器

f2py可以轻松地将Fortran语言转为Python的扩展模块,一般在安装numpy时会自动附带安装两个文件f2py.exe和f2py.py. 示例:在windows xp sp3下面使用Intel...

(转载)Cocos2d-x学习之windows 7的visual studo 2010开发环境安装

转载:http://www.cnblogs.com/lhming/archive/2012/06/27/2566442.html                           首先,感谢原作者的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Visual Layer Overview(2)--Visual Tree
举报原因:
原因补充:

(最多只允许输入30个字)