Visual \UIElemnt\FrameworkElement\Control

Visual

Visual实际上是 WPF 组合系统的入口点。Visual是托管 API 和非托管 milcore 这两个子系统之间的连接点。

Visual 对象可对下列功能提供支持:

  • 输出显示:呈现 Visual 对象的持久的序列化绘图内容。
  • 转换:对可视对象执行转换。
  • 剪辑:为 Visual 对象提供剪辑区域支持。
  • 命中测试:确定指定的坐标(点)或几何图形是否包含在可视对象的边界内。
  • 边界框计算:确定 Visual 对象的边框。UIElement

UIElement定义核心子系统,包括 Layout、Input 和 Event。 

      Layout

Layout 是 WPF 中的一个核心概念。在许多系统中,可能有一组固定的布局模型(HTML 支持三种布局模型:流、绝对和表),也可能没有布局模型(User32 实际仅支持绝对定位)。WPF 先假设开发人员和设计人员希望有一个灵活的可扩展布局模型,该模型可能是由属性值而不是命令性逻辑驱动的。在 UIElement级别,会引入布局的基本协定 - 具有 MeasureArrange处理过程的两阶段模型。

     Input

Touch\Mouse\Stylus\KeyBoard

输入是作为内核模式设备驱动程序上的信号发出的,并通过涉及 Windows 内核和 User32 的复杂进程路由到正确的进程和线程。与输入相对应的 User32 消息路由到 WPF 后,就会转换为 WPF 原始输入消息,并发送到调度程序。WPF 允许将原始输入事件转换为多个实际事件,允许在保证传递到位的情况下在较低的系统级别实现类似“MouseEnter”的功能。

    Event

Preview 隧道路由事件 vs 冒泡事件

如果事件从目标向上遍历树直到根,则被称为“冒泡”,如果从根开始向下遍历到目标,它们被称为“隧道”。输入预览事件隧道,使树中的任何元素都有机会筛选事件或对事件采取操作。然后,常规(非预览)事件将从目标向上冒泡到根。

继承层次结构


System.Object
System.Windows.Threading.DispatcherObject
System.Windows.DependencyObject
System.Windows.Media.Visual
System.Windows.UIElement
System.Windows.FrameworkElement

FrameworkElement

a)        应用程序布局

FrameworkElement引入的主要策略是关于应用程序布局。FrameworkElement基于 UIElement引入的基本布局构建而成,并增加了布局“插槽”的概念,使布局创作者可以更方便地拥有一组一致、属性驱动的布局语义。HorizontalAlignmentVerticalAlignmentMinWidthMargin等属性使得从 FrameworkElement派生的所有组件在布局容器内具有一致的行为。

b)        动画

c)        数据绑定 数据模板

d)        样式

Control

a)        常用属性

Control提供一组常用属性,如 ForegroundBackgroundPadding等,模板创作者可以使用这些常用属性来自定义控件的显示。控件的实现提供了数据模型和交互模型。交互模型定义了一组命令(如窗口的“关闭”),以及到输入笔势的绑定(如单击窗口上角的红叉)。数据模型提供了一组属性,用于自定义交互模型或自定义显示(由模板确定)。

b)        模型

数据模型(属性)、交互模型(命令和事件)及显示模型(模板)之间的划分,使用户可以对控件的外观和行为进行完全自定义。最常见的控件数据模型是内容模型。

 

 

转自:http://www.cnblogs.com/xiaokang088/archive/2011/05/05/2037528.html

posted @ 2012-09-06 17:08  therockthe  阅读(246)  评论(0)    收藏  举报