没有合适的资源?快使用搜索试试~ 我知道了~
首页最新WPF开发教程,WPF的体系结构,XAML,控件开发,数据绑定,图形和多媒体开发
最新WPF开发教程,WPF的体系结构,XAML,控件开发,数据绑定,图形和多媒体开发
需积分: 12 38 下载量 151 浏览量
更新于2023-07-03
评论 1
收藏 8.39MB PDF 举报
最新WPF开发教程,WPF的体系结构,XAML,控件开发,数据绑定,图形和多媒体开发
资源详情
资源评论
资源推荐
微软 WPF 应用
第 1 页 共 259 页
WPF 开发教程
^^^^^^^^^^^^^^^
^^^^^^^^^^^^
WPF 基础入门 ........................................................................................................................................ 3
1. WPF 基础之体系结构 ................................................................................................................... 3
2. WPF 基础之 XAML.......................................................................................................................... 9
3. WPF 基础之基元素..................................................................................................................... 23
4. WPF 基础之属性系统 ................................................................................................................. 26
5. WPF 基础之路由事件 ................................................................................................................. 34
6. WPF 基础之布局系统 ................................................................................................................. 47
7. WPF 基础之样式设置和模板化 ................................................................................................. 52
8. 详谈 WPF 开发中的数据虚拟化 ................................................................................................ 66
XAML 语法 ........................................................................................................................................... 76
1. XAML 语法术语 .......................................................................................................................... 76
2. 代码隐藏和 XAML....................................................................................................................... 84
3. XAML 和自定义类....................................................................................................................... 85
4. 标记扩展和 XAML....................................................................................................................... 89
5. XAML 命名空间和命名空间映射 ............................................................................................... 92
6. WPF 名称范围 ............................................................................................................................ 94
WPF 控件开发 ...................................................................................................................................... 97
1. WPF 控件开发之控件概述 ......................................................................................................... 97
2. 使用 XAML 创建按钮 ................................................................................................................ 105
3. WPF 控件库之 BUTTON ................................................................................................................ 116
4. WPF 控件库之 MENU ................................................................................................................... 117
5. WPF 控件库之 LABLE ................................................................................................................. 122
6. WPF 控件库之 TOOLBAR .............................................................................................................. 123
7. WPF 控件开发之自定义控件 ................................................................................................... 126
8. WPF 控件开发之装饰器 ........................................................................................................... 143
WPF 数据绑定 .................................................................................................................................... 146
1. 数据绑定概述 ......................................................................................................................... 146
2. WPF 数据绑定之绑定源 ........................................................................................................... 168
3. WPF 数据绑定之数据模板 ....................................................................................................... 170
4. WPF 数据绑定之绑定声明 ....................................................................................................... 185
5. 实例一:绑定到 ADO.NET 数据源 .......................................................................................... 189
微软 WPF 应用
第 2 页 共 259 页
6. 实例二:绑定到 LINQ 查询的结果 ........................................................................................ 190
WPF 图形和多媒体开发 .................................................................................................................... 191
1. WPF 图形动画和媒体概述 ...................................................................................................... 191
2. WPF 的图形呈现 ...................................................................................................................... 196
3. WPF 的图像处理 ...................................................................................................................... 210
4. WPF 的三维图形应用 ............................................................................................................... 224
5. WPF 的三维变换应用 ............................................................................................................... 234
6. WPF 的动画开发 ...................................................................................................................... 243
7. WPF 的多媒体开发................................................................................................................... 255
微软 WPF 应用
第 3 页 共 259 页
WPF 基础入门
1. WPF 基础之体系结构
本主题提供 Windows Presentation Foundation (WPF) 类层次结构的指导教程,涵盖
了 WPF 的大部分主要子系统,并描述它们是如何交互的。本主题还详细介绍了 WPF 架构师
所做的一些选择。
System.Object
WPF 主要编程模型是通过托管代码公开的。在 WPF 的早期设计阶段,曾有过大量关于
如何界定系统的托管组件和非托管组件的争论。CLR 提供一系列的功能,可以令开发效率更
高并且更加可靠(包括内存管理、错误处理和通用类型系统等),但这是需要付出代价的。
下图说明了 WPF 的主要组件。关系图的红色部分(PresentationFramework、
PresentationCore 和 milcore)是 WPF 的主要代码部分。在这些组件中,只有一个是非托
管组件 – milcore。milcore 是以非托管代码编写的,目的是实现与 DirectX 的紧密集成。
WPF 中的所有显示是通过 DirectX 引擎完成的,可实现高效的硬件和软件呈现。WPF 还要
求对内存和执行进行精确控制。milcore 中的组合引擎受性能影响关系大,需要放弃 CLR 的
许多优点来提高性能。
本主题的后面部分将讨论 WPF 的托管和非托管部分之间的通信。下面介绍托管编程模型
的其余部分。
System.Threading.DispatcherObject
微软 WPF 应用
第 4 页 共 259 页
WPF 中的大多数对象是从 DispatcherObject 派生的,这提供了用于处理并发和线程的
基本构造。WPF 基于调度程序实现的消息系统。其工作方式与常见的 Win32 消息泵非常类
似;事实上,WPF 调度程序使用 User32 消息执行跨线程调用。
要讨论 WPF 中的并发,首先必须真正理解两个核心概念 – 调度程序和线程关联。
在 WPF 的设计阶段,目标趋向于单一线程的执行,但这不是一种与线程“关联的”模
型。当一个组件使用执行线程的标识来存储某种类型的状态时,将发生线程关联。最常见的
形式是使用线程本地存储 (TLS) 来存储状态。线程关联要求执行的每个逻辑线程仅由操作
系统中的一个物理线程所拥有,这将占用大量内存。最后,WPF 的线程处理模型保持与具有
线程关联的单一线程执行的现有 User32 线程处理模型同步。主要原因是互操作性 – 类似
于 OLE 2.0 的系统、剪贴板和 Internet Explorer 均需要单一线程关联 (STA) 执行。
假设您具有带有 STA 线程的对象,则需要一种方式来在线程之间通信,并验证您是否
位于正确的线程上。调度程序的作用就在于此。调度程序是一个基本的消息调度系统,具有
多个按优先级排列的队列。消息的示例包括原始输入通知(鼠标移动)、框架函数(布局)
或用户命令(执行此方法)。通过从 DispatcherObject 派生,您可以创建一个具有 STA 行
为的 CLR 对象,并在创建时获得一个指向调度程序的指针。
System.Windows.DependencyObject
生成 WPF 时使用的主要体系结构原理之一是首选属性而不是方法或事件。属性是声明性的,
使您更方便地指定意图而不是操作。它还支持模型驱动或数据驱动的系统,以显示用户界面
内容。这种理念的预期效果是创建您可以绑定到的更多属性,从而更好地控制应用程序的行
为。
为了从由属性驱动的系统获得更多,需要一个比 CLR 提供的内容更丰富的属性系统。
此丰富性的一个简单示例就是更改通知。为了实现双向绑定,您需要绑定的双方支持更改通
知。为了使行为与属性值相关联,您需要在属性值更改时得到通知。Microsoft .NET
Framework 具有一个 INotifyPropertyChange 接口,使对象可以发布更改通知(不过,这
是可选的)。
WPF 提供一个丰富的属性系统,该属性系统是从 DependencyObject 类型派生的。该属
性系统实际是一个“依赖”属性系统,因为它会跟踪属性表达式之间的依赖关系,并在依赖
关系更改时自动重新验证属性值。例如,如果您具有一个会继承的属性(如 FontSize),
当继承该值的元素的父级发生属性更改时,会自动更新系统。
WPF 属性系统的基础是属性表达式的概念。在 WPF 的第一版中,属性表达式系统是关
闭的,表达式都是作为框架的一部分提供的。表达式致使属性系统不具有硬编码的数据绑定、
样式调整或继承,而是由框架内后面的层来提供这些功能。
微软 WPF 应用
第 5 页 共 259 页
属性系统还提供属性值的稀疏存储。因为对象可以有数十个(如果达不到上百个)属性,
并且大部分值处于其默认状态(被继承、由样式设置等),所以并非对象的每个实例都需要
具有在该对象上定义的每个属性的完全权重。
属性系统的最后一个新功能是附加属性的概念。WPF 元素是基于组合和组件重用的原则
生成的。某些包含元素(如 Grid 布局元素)通常需要子元素上的其他数据才能控制其行为
(如行/列信息)。任何对象都可以为任何其他对象提供属性定义,而不是要将所有这些属
性与每个元素相关联。这与 JavaScript 中的“expando”功能相似。
System.Windows.Media.Visual
定义一个系统后,下一步是将像素绘制到屏幕上。Visual 类用于生成可视化对象的树,
每个对象可以选择性地包含绘制指令以及有关如何呈现这些指令(剪辑、变换等)的元数据。
Visual 设计为极其轻量且灵活,所以大部分功能未进行 API 公开,并且极为依赖受保护的
回调函数。
Visual 实际上是到 WPF 组合系统的入口点。Visual 是以下两个子系统之间的连接点:
托管 API 和非托管 milcore。
WPF 通过遍历由 milcore 管理的非托管数据结构来显示数据。这些结构(称为组合节
点)代表层次结构显示树,其中每个节点都有呈现指令。只能通过消息传递协议来访问此树
(下图右侧所示)。
当对 WPF 编程时,您将创建 Visual 元素及派生的类型,它们通过此消息传递协议在
内部与此组合树进行通信。WPF 中的每个 Visual 可以不创建组合节点,也可以创建一个或
多个组合节点。
请注意一个非常重要的体系结构细节 – 可视对象和绘制指令的整个树都要进行缓存。
在图形方面,WPF 使用一个保留的呈现系统。这可以使系统以一个高刷新率重绘系统,并且
不会发生组合系统阻止对用户代码的回调。这有助于防止出现应用程序无响应的情况。
关系图中不十分引人注意的另一个重要细节是系统实际上如何执行组合。
在 User32 和 GDI 中,系统是在一个即时模式剪辑系统上工作。当需要呈现一个组件
时,系统会建立一个剪辑边界,不允许组件接触该边界之外的像素,然后会要求此组件在该
剩余258页未读,继续阅读
wsbylls
- 粉丝: 4
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0