WPF编程-WPF体系结构
WPF简介
Windows Presentation Foundation(WPF)是微软新一代图形系统,运行在.NET Framework 3.0架构下,为用户界面、2D/3D 图形、文档和媒体提供了统一的描述和操作方法。基于DirectX 9/10技术的WPF不仅带来了前所未有的3D界面,而且其图形向量渲染引擎也大大改进了传统的2D界面,比如Vista中的半透明效果的窗体等都得益于 WPF。微软还提供了专门的界面开发语言XAML(Extensible Application Markup Language,可扩展应用程序标记语言),使得界面描述代码和程序代码得以分开,从而提高了开发效率并有利于团队开发。
Windows Presentation Foundation https://msdn.microsoft.com/zh-cn/library/ms754130(v=vs.110).aspx
WPF中的一些重要组件
WPF使用多层体系结构。在顶层,应用程序与完全由托管C#代码编写的一组高层服务进行交互。
- PresentationFramework.dll包含WPF顶层的类型,包括哪些表示窗口、面板以及其他类型控件的类型。它还是想高层编程抽象,如样式。
- PresentationCore.dll包含了基础类型,如UIElement类和Visual类,所有形状类和控件都继承自这两个类。
- WindowsBase.dll包含了更多的基本要素,如DispatcherObject类和DependencyObject类,这两个类引入了依赖属性。
- milcore.dll是WPF渲染系统的核心,也是媒体集成层(Media Integration Layer,MIL)的基础。其合成引擎将可视化元素转换为Driect3D所期望的三角形和纹理。
- WindowsCodecs.dll是一套提供图像支持的低级API,例如处理、显示以及缩放位图和JPEG图像。
- Direct3D是一套低级API,WPF应用程序中的所有图形都由它进行渲染。
- User32用于解决哪些程序实际占有桌面的哪一部分。但在WPF中,它不负责渲染通用控件
类层次结构
WPF核心命名空间以System.Windows开头(如System.Windows、System.Windows.Controls、....)。下图为WPF中比较重要的几个类。
-
System.Threading.DispatcherObject
WPF应用程序使用单线程(STA)模型,整个用户界面由单个线程拥有,即从另一个线程与用户界面元素进行交互是不安全的。通过继承DispatcherObject类,用户界面中的每个元素都可以检查代码是否在正确的线程上运行,并能通过访问调度程序为用用户界面线程封送代码。 -
System.Windows.DependencyObject
在WPF中,主要是通过属性和屏幕上的元素进行交互。通过继承DependencyObject类,WPF类可获得对依赖项属性的支持 -
System.Windows.Media.Visual
在WPF窗口中显示的每个元素本质上都是Visual对象。可将Visual类视为绘图对象,其中封装了绘图指令、如何执行绘图的附加细节(如透明度、剪裁以及变换设置)以及基本功能(如命中测试)。任何继承自Visual的类都能够在窗口中显示出来。 -
System.Windows.UIElement
UIElement类增加了对WPF本质特征的支持,如焦点、布局、输入和事件。 -
System.Windows.FrameworkElement
FrameworkElement类实现了一些全部由UIElement类定义的成员。如UIElement为布局设置了基础,FrameworkElement类提供了支持它的重要属性(如Margin、HorizontalAlignment) -
System.Windows.Controls.Control
Control与用户进行交互的元素。 -
System.Windows.Controls.ContentControl
ContentControl类是所有具有单一内容的控件的基类。 -
System.Windows.Controls.ItemsControl
ItemsControl类是所有显示选项集合的控件的基类。如ListBox、TreeView... -
System.Windows.Controls.Panel
Panel类是所有布局容器的基类。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步