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 Studio 2015,Angular2进行开发快速入门

本文介绍了在 Visual Studio 2015 的 ASP.NET 4.x 项目中,用 Angular 实现“快速起步”所需的步骤。 ASP.NET 4.x 项目 在 ...
  • feiying008
  • feiying008
  • 2016年11月01日 15:02
  • 4183

安装Visual Studio 2013 update 2 更新包记录和新功能简单体验

visual studio 2013 update 2 正式版安装和体验
  • hecgaoyuan
  • hecgaoyuan
  • 2014年05月15日 13:10
  • 1651

Visual Prolog 的 Web 专家系统 (2)

Web 专家系统 WWWGENI 在目录VIP_root>\WWW\Programs\GENI中,有个例程,展示如何创建在WEB服务器支持下,以CGI脚本方式在因特网上工作的小型专家系统。 GENI...
  • lawme
  • lawme
  • 2014年07月07日 07:19
  • 1998

Visual Studio最好用的快捷键(你最喜欢哪个)

每次在网上搜关于VS有哪些常用快捷键的时候,出来的永远是一串长的不能再长的列表,完全没体现出“常用”二字,每次看完前面几个就看不下去了,相信大家都有这种感觉。其实我们平时用的真的只有很少的一部分,借用...
  • lanxuezaipiao
  • lanxuezaipiao
  • 2013年11月30日 23:10
  • 6244

一种计算Visual Hull的方法

计算Visual Hull的方法: A Robust and Accurate Method for Visual Hull Computation [Song Peng 2009] 计算3D b...
  • qq_27371925
  • qq_27371925
  • 2016年07月28日 15:21
  • 663

Visual Studio 使用技巧, 功能与特性

Visual Studio 有很多很强大的功能, 但是在我们日常开发中并不常用, 或者我们确实有需要这些功能, 但是由于没有系统研究过 VS, 以至于忽略了它的这些既有功能. 在这篇文章里,我试图记录...
  • changtianshuiyue
  • changtianshuiyue
  • 2016年05月22日 11:22
  • 767

Visual Studio2010简体中文版/旗舰版安装教程

1.下载Visual Studio2010 已经下好的无视这部分== 以下提供友情下载链接,信任官网的可以前往官网下载:http://www.microsoft.com/visualstudio/...
  • yishichangan1
  • yishichangan1
  • 2016年04月26日 14:39
  • 13197

使用Visual Studio对项目重命名

1.修改解决方案名称 2.修改项目名称 3.修改命名空间(通过重构的方式) 4.修改项目属性中的程序集名称 5.修改项目文件夹名称和.sln文件 项目文件夹:      .sln文件:...
  • frozleaf
  • frozleaf
  • 2016年01月15日 22:15
  • 1809

visual studio 2015 搭建python开发环境,python入门到精通[三]

转载地址:http://www.cnblogs.com/toutou/p/4778818.html v阅读目录 v写在前面v正文开始v博客总结 v博客前言 在上一篇...
  • l_215851356
  • l_215851356
  • 2017年04月01日 10:24
  • 985

C++处理json数据——jsoncpp在Visual Studio 2010 的配置与使用(上)

JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类...
  • qq_18310557
  • qq_18310557
  • 2017年01月03日 15:33
  • 376
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Visual Layer Overview(2)--Visual Tree
举报原因:
原因补充:

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