WPF学习笔记之8:Base Elemement in WPF
主要记录要写WPF Control,必须掌握的层次结构,明白自己要写的Control应该从那层派生更合适Object
1. DispatcherObject
l 类似于消息分发机制
l 提供对WPF线程模型的支持
l 每一个DispatcherObject关联一个Dispatcher
l
2. DependencyObject
l 可以认为是WPF的Object基础
l 提供GetValue 和 SetValue 支持以及一般的属性系统支持。
l 使用依赖项属性以及作为依赖项属性实现的附加属性的能力。
l
3. Visual
public abstract class Visual : DependencyObject |
l Visual 对象是一个核心 WPF 对象,其主要作用是提供呈现支持
l Visual 实现二维对象在近似矩形的区域中通常需要具有可视化表示的概念。
l Visual 的实际呈现发生在其他类中(不是独立的),但是 Visual 类提供了一个由各种级别的呈现处理使用的已知类型。
具体支持的功能包括:
² 坐标转换:
² 输出显示:为可视对象呈现持久的序列化绘图内容。
² 转换:对可视对象执行转换。
² 剪辑:为可视对象提供剪辑区域支持。
² 命中测试:确定指定的坐标(点)或几何图形是否包含在可视对象的边界内。
² 边界框计算:确定可视对象的边框。
在体系结构上,Visual 对象不包含对其他应用程序开发要求/与该对象的呈现密切相关的 WPF 功能的支持,如下所示:
² 事件处理
² 布局
² 样式
² 数据绑定
² 全球化
4. UIElement
public class UIElement : Visual, IAnimatable, IInputElement |
l 可以呈现为子元素
l 对基本输入事件和命令的支持,可以对用户输入作出响应(包括通过处理事件路由或命令路由控制输入发送的位置)
l 包含用于确定 UIElement可能的子元素的大小和位置的逻辑(由布局系统解释时)
l 可以引发遍历逻辑元素树路由的路由事件
l 对动画属性值的基本支持,支持动画系统的某些方面
Note: Visibility 状态影响该元素的所有输入处理。不可见的元素不参与命中测试并且不接收输入事件,即使鼠标放在该元素可见时的边界上也如此。
5. FrameworkElement
public class FrameworkElement:UIElement, IFrameworkInputElement, IInputElement, ISupportInitialize |
l 其他框架特定的布局特征
l 支持更丰富的有关属性的元数据报告
l 某些输入基类的特定于类的实现及其附加属性或附加事件
l 样式支持
l 更多的动画支持
l 对动态资源引用的支持。
l 对数据绑定的支持。
l 逻辑树的概念