博客园CLR基础研究团队 | CLR团队精品系列 | 周银辉的技术博客
[WPF实践之路]
目录导航
作者: 周银辉 发布日期: 2007年10月17日
©2007 http://zhouyinhui.cnblogs.com/ 原创作品 转载请注明作者与出处
学习WPF快一年了,在博客园中也写了不少随笔,今天将其中的部分随笔整理出来以便和园子里的兄弟们更好的交流学习,希望大家支持。
另外,这里只整理了那些原创的且容易归类的随笔,其它的一些较散乱的WPF随笔请访问我的博客, 随着学习的深入我的随笔也会增加并会尽可能地追加到此导航目录中。谢谢大家的支持!
1,WPF控件与布局系列
1.1 WPF中的控件布局
在这篇随笔里我主要介绍了WPF的几种基本的布局控件,包括Canvas,Grid,StackPanel等,运用这些布局控件我们可以很轻松地完成以前Window Forms开发时不易完成的布局任务
1.2 .net3.0 中跨线程访问控件
.net3.0中要跨线程访问控件与以前相比有一些小小的改变了,请详见随笔正文
1.3 WPF中, 启用添加到RichTextBox中的控件
WPF中RichTextBox的确非常的强大, 但让人很郁闷的是:添加到其中的控件总是被禁用的(IsEnabled始终为false),虽然我们已经将Button的IsEnable属性设置为True,但实际运行时其仍然是被禁用的.本随笔将告诉你如何启用它
1.4 自定义WPF面板
WPF拥有很多布局面板,比如Grid, StackPanel等,这让我们的界面布局更加的灵活,但也许这些面板并不能完全满足你的需求,这时你需要自定义面板来满足你的布局要求.
1.5 WPF中InkCanvas(墨水面板)用法
WPF中提供了一个很有趣的控件InkCanvas,我们这里将提供一个比较Cool的Demo并分享其功能.
1.6 WPF中的日历控件
WPF没有提供标准的日历控件,这给开发带来了些不便. 这里找到了一个日历控件,是Microsoft开发的, 但其只相当与.net2.0中的普通日历控件,而没有Vista中日历控件那么酷.
2,WPF动画系列
2.1 WPF中的动画
动画无疑是WPF中最吸引人的特色之一,其可以像Flash一样平滑地播放并与程序逻辑进行很好的交互。这里我们讨论一下故事板。
2.2 一头雾水的"Follow The Pointer"
Microsoft Expression Blend中有一个示例程序"Follow The Pointer", 看程序演示会觉得很酷,看代码会觉得一头雾水, 不过现在我便借此介绍一下WPF中的CompositionTarget 以及该示例中设计到了一些物理知识.
2.3 WPF中的PathAnimation(路径动画)
介绍一下如何使用Microsoft Expression Blend与编码两种方式编写路径动画
2.4 让GridLength支持动画
这篇随笔提供了一个不错的DEMO,从这里你可以知道如何打造自己的动画类型
2.5 WPF与缓动(一) N次缓动
如果我们希望制作的动画效果像现实生活中的运动一样平滑, 比如汽车的启动与停止总有一个加速或减速的过程, 那么我们有必要研究一下"缓动"
2.6 WPF与缓动(二) 正弦与余弦缓动
如果要比二次缓动来得更平缓, 可以使用正弦或余弦缓动.这里介绍一下.
2.7 WPF与缓动(三) 指数缓动
指数缓动给人的感觉是加速度很大. 它的原始公式来自:P(t) = Math.Pow(2, 10*(t-1)); 这里介绍一下
2.8 WPF与缓动(四) 弧形缓动
弧形缓动就是其缓动曲线为一段圆弧, 如何我们假设圆弧上的点的斜率为速度的话,那么可以想像其速度的变化多么具有戏剧性, 其加速或减速来得很突然, 与5次缓动差不多.
3,WPF图像绘制系列
3.1 在WPF中自定义你的绘制(一)
在传统的Windows窗体编程中,如果我们需要打造一些比较个性化的控件,那么我们常常需要自定义控件的绘制(重写OnPaint等),即需要经常用到Graphics对象。而在WPF中,我们可以使用Xaml轻松编写出很有特色的界面元素,似乎与以前的以前利用Graphics对象手写代码绘制控件的日子越来越远了。其实在WPF中,如果我们需要低级别的自定义绘制同样是可以的,那么我们就需要一个名DrawingContext的类。与OnPaint方法相对应的是OnRender方法(当然,你也可以在其他地方进行绘制)。
3.2 在WPF中自定义你的绘制(二)
绘制几何图形,图片以及文本
3.3 在WPF中自定义你的绘制(三)
讨论一下WPF如何将多个图形进行合并绘制。
3.4 在WPF中自定义你的绘制(四)
讨论一下如何使用PahtGeometry来绘制复杂的图形
4,WPF模板样式系列
4.1 WPF中的Style(风格,样式)
在WPF中我们可以使用Style来设置控件的某些属性值,并使该设置影响到指定范围内的所有该类控件或影响指定的某一控件,比如说我们想将窗口中的所有按钮都保持某一种风格,那么我们可以设置一个Style,而不必分别设置每个按钮的风格。
4.2 WPF中的ControlTemplate(控件模板)
WPF包含数据模板和控件模板,其中控件模板又包括ControlTemplate和ItemsPanelTemplate,这里讨论一下ControlTemplate。
4.3 WPF中的数据模板(DataTemplate)
在WPF中我们可以为自己的数据定制显示方式,也就是说虽然某数据数据是一定的,但我们可以做到让它的表现方式多种多样,比如一个时间,在以前我们一般使用一个字符串(比如“12:03”)来显示,但我们为什么就不能显示一个小时钟呢,其实这更合乎情理,利用WPF中的数据模板技术随意并轻松地表现你的数据.
4.4 Show me the Template
默认控件模板无疑是最好的学习模板的资源,通过这里提供的开源小程序你可以方便地查看系统模板
5,WPF数据绑定、命令系列
5.2 WPF中的命令与命令绑定(一)
本系列随笔将与你一起探讨WPF中的Commanding机制以及应用
5.3 WPF中的命令与命令绑定(二)
本系列随笔将与你一起探讨WPF中的Commanding机制以及应用,这是第二部分
6,其它实践系列
6.1 用WPF轻松打造iTunes CoverFlow效果
苹果iTunes播放器的CoverFlow效果羡煞旁人,不过有了WPF,我们也可以轻松实现
6.2 为WPF项目创建单元测试
可能你已发现一个问题,我们无法使用VS对WPF项目创建单元测试(VS2005不行,VS2008我没试过,但据说也不行),这让人很郁闷,这里将介绍如何使用NUnit来对WPF项目创建单元测试并解决其中的难题(但利用NUnit来对WPF创建单元测试时并不会像针对.Net2.0一样容易,可能会出现一些小问题).
6.4 为WPF中DropShadowBitmapEffect提供轻量级的替代品
在位图效果中,最常用的当数阴影(DropShadowBitmapEffect),这里有一个DropShadowBitmapEffect的替代品SystemDropShadowChrome,其虽算不上完美,但在很多时候却是一个不错的解决DropShadowBitmapEffect性能问题的方法.
6.5 WPF中,如何将Vista Aero效果扩展到整个窗口
有不少示例介绍了如何将Vista Aero效果扩展到整个窗口,但大都是针对Windows Form应用程序,而不是WPF,这里介绍一下如何在WPF中扩展Aero效果