一. 摘要
逻辑树与视觉树属于WPF的基本概念,学过WPF或者Silverlight的朋友一定会对其有所耳闻,这篇文章 将来探讨逻辑树与视觉树的特质以及两者的区别
二.本文提纲

  1. WPF Inspector工具介绍
  2. 观察逻辑树与视觉树
  3. 与ASP.NET服务器控件比较(控件为逻辑树,HTML为视觉树)
  4. 与JavaScript客户端控件比较(一个根逻辑树,HTML为视觉树)
  5. 组装控件
  6. 小结

1、 WPF Inspector
WPF Inspector工具 工欲善其事,必先利其器. WPF Inspector是一个新的WPF辅助工具,我们可以通过这个工具来观察WPF程序生成的逻辑树与视觉树
2、 观察逻辑树与视觉树
我们以一个简单的程序来观察下逻辑树与视觉树

<Button Content=”HELLO WORLD” Width=”200”Height=”100”>

以上代码呈现的元素树结构如下

左侧为视觉树,右侧为逻辑树
我们看出以下特性
WPF启动程序的根元素均为Application
逻辑树与XAML的布局结构是相同的
视觉树是根据控件的模板来呈现的,我们很难猜测视觉树的结构,因为控件还可以自定义模板 我们可以看到逻辑树上的元素一个视觉树局部元素的一个组合,比如Button,由三个元素组 成,ButtonChrome,ContentPresenter,TextBlock

Button的组合
3、 与ASP.NET服务器控件比较(控件为逻辑 树,HTML为视觉树)
如果你没有接触过ASP.NET的话,可以略过这部分.
如果你理解ASP.NET控件的话,那么理解起来会更加容易. ASP.NET的服务器控件是一个逻辑树,一个服务器控件由若干的HTML组成,但我们知道我们是无法在 服务器端知道HTML代码的,即ASP.NET没有视觉树的概念.
4、 与JavaScript客户端控件比较(一个根逻辑 树,HTML为视觉树)
如果你用过jQuery等前端js库的话,比如Tab的运用,一句简单的话就可以创建一堆HTML出来,Tab本身 则是一个控件,但其本身没有逻辑树的概念
以上两者是web服务器端与客户端的比较,由于两者状态无法共享,在交互方面没有客户端来的方便.所 以WPF的逻辑树与视觉树概念并不是新的概念.
5、 组装控件
为WPF创建一个新控件是非常简单的,一般有以下两种方式
1.采用用户控件

2.采用模板

采用模板的时候,逻辑树将变得更少,视觉树将保持不变

注意:不要将模板内的控件纳入逻辑树范围内,否则你会很失望地无法找到模板内部的元素.
6、 总结
本篇简单的介绍了WPF视觉树与逻辑树的概念,大家可以通过与其他技术比较的方式来理解,先有一个 感性的认识。下篇继续,希望能完结

逻辑树与视觉树基本概念相关推荐

  1. 园子里关于罗辑树与视觉树的文章

    http://www.cnblogs.com/YilingLai/archive/2006/12/22/600279.html 转载于:https://www.cnblogs.com/refeiner ...

  2. 视觉树和逻辑树的概念

    逻辑树与视觉树属于WPF的基本概念,学过WPF或者Silverlight的朋友一定会对其有所耳闻,这篇文章将来探讨逻辑树与视觉树的特质以及两者的区别 WPF Inspector工具介绍 WPF Ins ...

  3. WPF 视觉树和逻辑树区别,以及其子节点的遍历过程。

    一.定义上区分 1.添加元素的分类,称为逻辑树.解析:用window或者是application向下定位到组成界面的基本控件元素,就是逻辑树. 2.视觉树是逻辑树的拓展版本.解析:把逻辑树上的控件元素 ...

  4. 理解WPF中的视觉树和逻辑树

    理解WPF中的视觉树和逻辑树  Understanding the Visual Tree and Logical Tree in WPF 这篇文章讨论WPF中视觉树和逻辑树的细微差别.同时提供了一个 ...

  5. WPF,Silverlight与XAML读书笔记第六 - WPF新概念之一逻辑树与可视树

    说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. WPF中,XAML来呈现用户界面,其层次化的 ...

  6. WPF遍历视觉树与逻辑树

    xaml代码: <Window x:Class="WpfApplication1.MainWindow"xmlns="http://schemas.microsof ...

  7. WPF-10 逻辑树和可视化树

    我们在WPF-03 资源之Resources结尾中介绍逻辑树和可视化树的基本概念,我们这节来介绍这两棵树 逻辑树(Logical Tree) 逻辑树是由每个控件的节点组成,本质上就是XAML文件中的U ...

  8. WPF 逻辑树和可视化树

    逻辑树: 逻辑树是在 WPF 框架级别定义,它主要是为了描述一个"界面对象"的构建过程,相当于对象族谱:抽象的名字和相对的位置关系.它是由 WPF 基元素是 FrameworkEl ...

  9. 逻辑树与可视树[转]

    本章内容 l    逻辑树与可视树 l    依赖属性 l    路由事件 我们即将完成本书的第一部分,在开始一些真正有趣的话题之前,回顾一下之前介绍的一些主要概念是很有用的,这也是.NET程序员们所 ...

最新文章

  1. python 文案自动生成_Python自动化测试如何自动生成测试用例?
  2. pytorch shape[1]的解释
  3. .Net Core中使用RabbitMQ
  4. mysql分页 disti_MySql查询性能优化
  5. java怎么使用wcf_如何使用WCF服务
  6. c语言喂狗的作用,兽医忠告:用这几样食物喂狗,简直就是喂“砒霜”!
  7. 二进制GCD算法解析
  8. pyecharts-饼图/极坐标/雷达/水球图/仪表盘/词云图/漏斗图/箱型图/热力图/日历图
  9. cad一键卸载工具叫什么_CAD专用卸载修复工具,一键完全彻底卸载删除CAD软件的专用卸载工具...
  10. Jpg格式图片如何缩小?怎么把jpg格式图片变小?
  11. FileOpen 打开文件
  12. Spring的refresh()方法相关异常
  13. Flash绘画与动画宝典
  14. 游戏引擎——cocos2d-x
  15. 肥鲨HDO和HD3买哪个?
  16. 做一个九宫格诗词答题小程序 (二)倒计时功能实现
  17. 搜狗云输入法,比较cool的输入法
  18. 查找新式BADI的方法
  19. 如何用Visio画数据库实体关系图
  20. 读《富兰克林传 绪》有感

热门文章

  1. 常识——windows的tensorflow安装gpu版本,cuda算力只有3.0也可以
  2. Leetcode 998
  3. Bert模型介绍及代码解析(pytorch)
  4. Dynread微信商城源码(二开利器)
  5. IEEE SA 会员注册步骤
  6. 甲骨文称:IT安全投得多不如投得巧
  7. Java基础知识小练习合集
  8. 悬剑2.0 tools安装_window安装虚拟光驱
  9. 2021-2027全球与中国AMB陶瓷基板市场现状及未来发展趋势
  10. 微信小游戏制作坦克大战(五)敌方坦克可以发射炮弹