描述下WPF对象完整的层次结构?
- Object: 由于 WPF 是使用 .NET 创建的,因此 WPF UI 类继承的第一个类是 .NET 对象类。
- Dispatcher: 一个抽象基类,用于绑定到一个线程上的类。与Windows窗体类似,WPF也要求仅从创建线程中调用方法和属性。WPF应用程序使用为人熟知的单线程亲和(Single-Thread Affinity,STA)模型,这意味着整个用户界面由单个线程拥有。从另一个线程与用户界面进行交互是不安全的。通过继承自DispathcerObject类,用户界面中的每个元素都可以检查代码是否在正确的线程上运行,并能通过访问调度程序为用户界面线程封送代码。
- Dependency: 所有支持依赖属性的类的基类。依赖属性可以依赖其他输入,例如主题和用户喜好。依赖属性与数据绑定,动画,资源和样式一起使用。
- Visual: 所有可见元素的基类都是Visual。这个类包含点击测试和转换等特性
- UI Element: 所有需要基本显示功能的WPF元素的抽象基类是UIElement。这个类提供了鼠标移动,拖放,按键的通道和起泡事件;提供了可以由派生类重写的虚显示方法;以及布局方法。WPF不再使用Window句柄,这个类就可以用Window句柄
- FrameworkElement: FrameworkElement派生自基类UIElement,实现了由基类定义的方法的默认代码
最后,所有 WPF 控件 textbox 、 button 、 grids 以及可以从 WPF 工具箱中想到的任何内容都继承自FrameworkElement类。