基础到企业应用系列3——WPF开发漫谈

发布时间:2026/7/6 14:00:26

基础到企业应用系列3——WPF开发漫谈 首先很高兴这个系列能得到大家的关注和支持基于对大家负责和对自己负责的态度我会不断努力写好这个系列分享自己的微薄技术和经验希望在帮助别人的同时也不断提升自己。由于这篇文章稍多所以读者花的时间长了一些也希望大家能够见谅这个系列以后会每周发三到四篇左右主要是写一篇差不多要花几晚上感觉思维比较发散除了讲WPF技术本身之外也会讲一些项目具体开发所以敬请关注。在前两次的文章中我们对WPF有了一个比较全面的认识那么在本篇文章当中除了讲一些理论知识外我们会从实际的开发中进行讲解用理论和代码的形式来诠释WPF的简单开发过程。2.本文提纲· 1.开篇前言· 2.本文提纲· 3.WPF开发基础· 4.Expression系列工具简单介绍· 5.其他工具介绍· 6.WPF和WinForm案例. 7.漫谈WPF开发· 8.本文总结. 9.系列进度3.WPF开发基础本系列文章默认情况下开发环境为Windows XPSP3英文版和Visual Studio 2008SP1英文版。要使用Windows 7 Professional和Visual Studio 2010开发环境的时候会附加说明。在搭建好开发环境之后打开VS2008,选择创建项目(Create Project),出现如下图所示的选择项目模板的对话框在项目模板选择对话框中选择WPF Application,修改项目名称(Name)(已经截图完毕所以没能改名望见谅),和存储位置(Location),点击 确定 OK按钮,便成功创建了一个WPF应用程序模板中文件层次结构如下图所示在References里面自动引入了图一中的PresentationCore、PresentationFramework、WindowsBase三大核心程序集图二在App.xaml中指定项目运行时启动的是窗体Window1,还可以定义我们需要的系统资源以及引入程序集等详细看下图介绍在Window1.xaml中设计窗体的外观首先我们将窗体的Title更改为XAMLWithScript,然后设置窗体的其他属性和事件 。完成了这些设置以后我们就可以对窗体添加内容了本实例对窗体添加了一个Button然后对Button进行了一些简单的设置详细如下图所示上图没有对一些概念讲全所以下面这幅图用另外一个窗体对某些概念进行了补充由于我把很多概念都画到了图里面所以在此就不做过多解释详细如下由于每个概念都比较细且多的缘故所以这里只是对一些基本的概念和元素进行了展示后续文章会做一一介绍也欢迎和大家一起讨论4.Expression工具的使用由于自己主攻方向不在这个方面所以对这些工具也只是会使用而已会用Expression做一些基本的效果和应用但更多时候都是在visual studio里面手写代码不过有的时候为了配合美工进行代码集成也会接触这些工具。在 Expression Design 中打开作品文件。这个作品有可能是你用其他工具创建的也可以是你用Expression Design 设计的但个人认为它还是没有Photoshop/CorelDraw/Fireworks等工具好用。如果要导出切片请从“工具箱”中选择“切分”工具围绕所要导出的作品区域绘制一个矩形然后在“属性”面板中的“编辑切片”下设置切片的属性如“Name”。单击“文件”菜单上的“导出”。此时将显示“导出”对话框。在“要导出的项”下选择以下选项之一“整个文档” 导出文档中的所有作品。“选定对象” 只导出那些在美工板上选定的项目。“切片” 只导出生成的切片。您可以根据情况选择更改所显示的每个切片的属性。接下来设置“格式”请选择以下任一选项“XAML Silverlight 画布” 导出单个 XAML 文件其中包含表示为画布版式面板中的对象的所有作品。您可以在 Expression Blend 3中将此 XAML 文件导入到 Microsoft Silverlight 项目内以用作独立的文档启动的 XAML 文件或以编程方式加载的 XAML 文件或将对象复制并粘贴到另一个 XAML 文档中。“XAML WPF 图形画笔” 导出一个资源字典其中包含表示为图形画笔资源的所有作品。您可以在 Expression Blend 3 中将此 XAML 文件导入到 Windows Presentation Foundation (WPF) 项目内然后将这些资源应用于项目中的对象的画笔属性。“XAML WPF 画布” 导出单个 XAML 文件其中包含表示为画布版式面板中的对象的所有作品。您可以在 Expression Blend 3 中将此 XAML 文件导入到 Windows Presentation Foundation 项目内以用作独立的文档启动的 XAML 文件或以编程方式加载的 XAML 文件或将对象复制并粘贴到另一个 XAML 文档中。您还可以在 Expression Blend 3 的“设计”视图中打开该文件右键单击任意一个或多个对象然后通过选择“工具”菜单上的选项利用这些对象来创建按钮或用户控件。在对话框底部的“位置”框旁边键入导出文件所在的文件夹的路径我们这里就保存在D盘。还可以设置下列选项如果决定导出“整个文档”或“选定对象”还需要输入文件的名称。如果决定导出“切片”则可以根据情况选择一个版式面板以包含所有对象。单击“全部导出”以导出文件。在 Expression Blend 3 中打开的项目内单击“项目”菜单上的“添加现有项”。在“添加现有项”对话框中浏览找到所导出的一个或多个 XAML 文件选择这些文件然后单击“打开”。5.其他的一些工具除了上面我们用到的Expression Design、Expression Blend和Visual Studio以外我们还会用到一些其他的工具比如一些调试工具、一些性能优化工具和XAML查看工具。KaXaml是一个轻量级的XAML编辑器用它之前我们一直都是用XAMLPad但是用了KaXaml以后才发现XAMLPad是那么的不好用并且KaXaml是开源的在codeplex上进行了发布感兴趣的朋友也可以下载它的源代码进行研究。它主要的功能如下1内置诸多代码片段模版2内置ColorPicker3xaml scrubber 可以帮你清理你的XAML代码4支持语法高亮和智能提示其他的一些工具和资源园子里周金根做了一些收集我在这里也不做一一介绍了大家可以看一下他的博客详细地址WPF 资源收集我觉得整理的非常的不错。6.WPF和WinForm案例介绍这个例子主要展示同一个需求用WinForm和WPF分别进行实现通过这个例子我们可以看到两者之间的区别和联系同时也可以对我们的项目选型带来一定的参考作用原型来自于Josh Smith的一篇文章个人觉得讲得非常不错所以对原有例子进行了改造进而有了这个案例。当然作为一项新技术WPF带来了很多功能但在使用这些功能的同时也会带来很多缺点这是不可避免的正所谓”有利必有弊“吧所以我们这个例子并不是讲WPF有如何如何的好怎样用WPF代替WinForm而是从两者实现同一个需求进行简单的对比。这个例子是用Visual Studio 2008编写的所以大家可以下载下来进行查看.特别声明这个程序并不是要展现声明优秀的架构也不是为了宣扬的种种好处所以没有采用当前比较热门的MVP、MVVM模式进行开发同时项目当中你可以看到很随意的代码没有对IOC、AOP以及设计模式进行应用这也是考虑到具体需求和例子简单的原因况且这里也没有必要我们在做项目的时候也要时刻注意什么时候用什么开发框架、开发模式以及项目整体架构。程序概览这个例子非常简单需求就是展示三大社区的基本信息同时你可以在输入框对其进行修改当焦点切换的时候你就会看到它会自动进行修改你把鼠标放在图片上面会提示社区的ID等等。我在这里没有用复杂的逻辑和高深的架构只是想通过这个例子展示WinForm的WPF的差异和联系所以在程序处理上可能会有很多漏洞比如没有对输入进行验证你可以输入空格和任意字符等。下面是WinForms版本的截图:下面是WPF版本的截图:

相关新闻