WPF中的逻辑树和可视化树】的更多相关文章

WPF中的逻辑树是指XAML元素级别的嵌套关系,逻辑树中的节点对应着XAML中的元素. 为了方便地自定义控件模板,WPF在逻辑树的基础上进一步细化,形成了一个“可视化树(Visual Tree)”,树中的每个节点代表一个可以在控件模板中定制的元素.简言之,可视化树主要是为设计WPF控件模板而服务的.…
一.前言 ​ WPF 中有两种"树":逻辑树(Logical Tree)和可视化元素树(Visual Tree). Logical Tree 最显著的特点就是它完全由布局组件和控件组成.那么 Visual Tree 是什么呢? ​ 如果我们仔细观察一棵树的树叶,会发现树叶的脉络也像一棵"树"--有自己的基部并向上生长出多级分叉.在 WPF 的 Logical Tree 上,充当"树叶"的一般都是控件,如果我们仔细观察控件,会发现 WPF 控件本身…
在前面章节中,花费大量时间分析了窗口的内容模型——换句话说,研究了如何在其他元素中嵌套元素,进而构建完整的窗口. 例如,考虑下图中显示的一个非常简单的窗口,该窗口包含两个按钮.为创建该按钮,在窗口中嵌套了一个StackPanel控件.在StackPanel控件中,放置了两个Button控件,并且在每个按钮中可以添加所选择的内容. 下面是该窗口的标记: <Window x:Class="SimpleWindow.MainWindow" xmlns="http://sche…
原文:在WPF中减少逻辑与UI元素的耦合             在WPF中减少逻辑与UI元素的耦合 周银辉 1,    避免在逻辑中引用界面元素,别把后台数据强加给UI  一个糟糕的案例 比如说主界面上有一个显示当前任务状态的标签label_TaskState,我们会时常更新该标签以便及时地将任务状态通知用户.那么很糟糕的一种假设是我们的代码中会到处充斥着这样的语句段this.label_TaskState .Content = this.GetStateDescription(TaskSta…
XAML天生就是用来呈现用户界面的,这是由于它具有层次化的特性.在WPF中,用户界面由一个对象树构建而成,这棵树叫作逻辑树.逻辑树的概念很直观,但是为什么要关注它呢?因为几乎WPF的每一方面(属性.事件.资源等)都有与逻辑树相关联的行为.例如,属性值有时会沿着树自动传递给子元素,而触发的事件可以自底向上或自顶向下遍历树. 与逻辑树类似的一个概念是可视树.可视树基本上是逻辑树的扩展,在可视树中,节点都被打散,分放到核心可视组件中.可视树提供了一些详细的可视化实现,而不是把每个元素当作一个“黑盒”.…
在我们使用WPF设计前台界面时,经常会重写数据模板,或者把控件放到数据模板里.但是一旦将控件放到数据模板中,在后台就没有办法通过控件的名字来获取它了,更没办法对它进行操作(例如,隐藏,改变控件的某个值). 如果你是比我还白的小白,对我刚刚陈述的东西不清楚,接下来我简单说一下什么是把控件放在数据模板中,怎么样的情况没法后台通过名字来获取控件,如果读者对于数据模板这些事儿已经清楚了,或者只关心如何使用可视化树可以将这部分跳过哈. 先上代码介绍一下什么是数据模板以WPF中ListBox控件为例: <L…
轉載地址:http://blog.csdn.net/changtianshuiyue/article/details/26981797 理解WPF中的视觉树和逻辑树  Understanding the Visual Tree and Logical Tree in WPF这篇文章讨论WPF中视觉树和逻辑树的细微差别.同时提供了一个小程序供读者稍后分析.如果你已经对着两个概念完全不熟悉,我建议你先读SDK文档中的这篇文章“URL”. 背景 目前SDK文档中关于视觉树和逻辑树的介绍还不是很完全.从…
前面几节说了一些WPF的基础,包括XAML和布局等.在接下来的几节,我们来说说WPF的核心概念,包括逻辑树和可视树.依赖对象和依赖属性.路由事件.命令这几个部分.本节介绍下逻辑树(Logical Tree)和可视树(Visual Tree). 逻辑树和可视树 在WPF中,用户界面是由XAML来呈现的.粗略地讲,从宏观上看,叶子为布局组件和控件所组成的树既是逻辑树,从微观上看,将逻辑树的叶子再放大可看到其内部是由可视化组件(继承自Visual类)组成的,叶子为这些可视化组件组成的树既是可视树. 逻…
一.什么是逻辑树 逻辑树就是描述WPF界面元素的实际构成,它是由程序在XAML中所有的UI元素组成.最显著的特点就是由布局控件.或者其他常用的控件组成. <Window x:Class="WpfRouteEvent.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/win…
将控件的visibility 设置为collapse时,控件的可视化树并未生成,此时并不能查找到控件内的子控件. 若某控件想对用户不可见,且可以生成可视化树,则需将控件的visibility 设置为hidden…