逻辑树与视觉树基本概念

一. 摘要
逻辑树与视觉树属于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视觉树与逻辑树的概念,大家可以通过与其他技术比较的方式来理解,先有一个 感性的认识。下篇继续,希望能完结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值