毕业设计基于WPF的文档编辑软件的设计与实现.docx
- 文档编号:27337726
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:37
- 大小:118.55KB
毕业设计基于WPF的文档编辑软件的设计与实现.docx
《毕业设计基于WPF的文档编辑软件的设计与实现.docx》由会员分享,可在线阅读,更多相关《毕业设计基于WPF的文档编辑软件的设计与实现.docx(37页珍藏版)》请在冰豆网上搜索。
毕业设计基于WPF的文档编辑软件的设计与实现
基于WPF的文档编辑软件的设计和实现
摘要
随着用户需求复杂化,目前大部分应用程序已逐渐不能满足更高、更全方位的用户体验要求。
为给用户提供更具视觉效果的体验,微软在最新发布的WindowsVista开发库中引入全新的图形子系统WindowsPresentationFoundation(WPF)。
本设计是对WPF结构及其所提供的技术和方法进行初步探讨,并应用WPF技术设计实现文档编辑软件。
本设计以.NETFramework3.0技术为背景,采用统一编程模型,确定设计和代码分离的开发框架。
使用微软最新开发工具ExpressionBlend开发用户界面和控件,运用WPF提供的服务及对开发和设计的统一,实现文本编辑窗体及丰富的用户体验,并将其生成为XMAL资源文档。
最后在VS2010中导入相关资源文档,实现后台逻辑代码并导入XML数据存储文档,初步实现具有较丰富文本编辑功能的文本编辑软件。
关键词:
WPF,XAML,窗体,文本编辑
ThedesignofWPF-baseddocumenteditingsoftware
ABSTRACT
Astherequirementsofusersbecomemoreandmorecomplex,themajorityofapplicationshavegraduallyfailedtomeetusers'demandforgreaterandall-rounduserexperiencenow.InordertoprovidemoreeffectivevisualexperiencetoUI,MicrosoftbringsoutanewgraphicssubsystemnamedWindowsPresentationFoundation(WPF)inthelatestreleaseofWindowsVistadevelopmentlibrary.
ThemaincontentofthepresentdesignistodiscussWPF'sstructure,thetechniquesandmethodsitprovides.AndwiththeapplicationofthetechnologywecanrealizethedesignofWPF-baseddocumenteditingsoftware.Onthebackgroundoftechniquesof.NETFramework3.0,thepresentdesignusesaunifiedprogrammingmodelunderwhichUIandthelogicalcodeareseparated.Inthisdesign,theUIandcontrolsaredevelopedbythelatestMicrosoftdevelopmenttool,ExpressionBlend,usingWPFprovidesservicesandtotheunityofthedevelopmentanddesigntorealizetheformofthetexteditingandtherichuserexperience.TheseUIdesignsshouldbebuiltintoXAMLresourcedocumentandimportedtoVS2008.Lastly,theXAMLresourcedocumentwillbeintegratedwithhiddenlogicalcodeandXMLdatafilesintheVS2010.Thepresentdesignimplementsasimpletexteditingsoftwarewithrichtexteditingfunction.
KEYWORDS:
WPF,XAML,Form,Textediting
前 言
微软Windows操作系统成功推出已有十多年,在Windows系统平台上从事图形用户界面(GraphicUserInterface,GUI)程序开发的程序员数不胜数。
GUI程序员们手中的开发工具经历了Win32API→MFC(及同类产品)→ActiveX/COM/VisualBasic→WindowsForms的变迁,每一次变迁都使开发效率和质量产生飞跃。
从2007年开始,微软推出了它的新一代GUI开发工具WindowsPresentationFoundation(直译为Windows表示基础,WPF),并且把WPF定为未来十年Windows平台GUI开发的主要技术。
时至今日,不但WindowsVista、Windows7、WindowsServer2008、WindowsServer2008R2等系统已经无缝集成了WPF,连VisualStudio2010等重要产品也已使用WPF进行开发。
随着计算机技术的不断发展,文本编辑器成为大家必不可少的工具,但是不同的用户对文本编辑器有不同的功能需求,所以除了像Office中的Word还有WPS等大众文本编辑器,还需要一些带有一定相关专业功能的文本编辑器,可以方便用户进行工作与开发。
考虑到WPF具有更广阔的可操作空间、更高的执行效率和更丰富的本地资源支持。
本毕业设计选定以WPF为基础,系统了解Framework3.0开发基础和WPF应用环境。
通过引入统一的编程模型,运用WPF提供的控件新特性,实现文档编辑功能。
文字编辑功能的实现如:
字体、字号、加粗、倾斜、下划线以及段落格式的设置,也可以在文档中添加图片、表格;文本编辑功能的实现,如文档的打开、文本的保存、自动生成HTML;创建超链接:
点击超链接按钮可直接实现链接功能。
这些功能实现了丰富用户体验、强化人机交互性能、优化用户界面的目的。
第1章绪论
1.1课题背景及目的
WindowsPresentationFoundation是窗体、文档、视频、三维以及其他功能的综合,因此企业可以创建持久的用户体验解决方案,并集成到客户的日常活动中。
WindowsPresentationFoundation为开发人员和设计人员提供了统一的UI平台,因此他们只需学习一个模式,就可以获得无限可能的UI体验。
对于.NET开发人员,其框架是熟悉的,并且它最终将减少提供最佳用户体验和通信逻辑所需的代码行数。
对于设计人员,WindowsPresentationFoundation提供的平台可消除内容、媒体和应用程序之间的边界。
最重要的是,WindowsPresentationFoundation可以使开发人员和设计人员同步紧密地合作来快速提供不同的连通体验。
因此,WPF的开发理念更符合自然哲学的思想。
它也将给Windows应用程序的开发带来一次革命,因为新的架构提供了一种全新的开发模式。
当然对于普通用户而言,最直观的就是界面越来越漂亮,看起来越来越舒服了;但对于开发人员而言,界面显示和代码将更好的得到分离,这与从前的桌面应用程序开发有很多不同(界面设置和代码是融合在一起的),这是比较具有革命性的改变之一。
使用WPF进行开发较之WindowsForms开发要简单,程序更加简洁清晰。
微软已经把WPF的理念扩展到了几乎全部平台,包括桌面平台、浏览器平台和手机平台。
所以WPF的发展前景非常好、回报也很大。
目前已有很多人开始考虑或者已经转向WPF,一场新的学习热潮已经开始。
但根据我最近的学习和了解,国内关于WPF的资料很少,除了MSDN提供的资料以外,基本都是来自国外的资料,有些则是国外开发人员BLOG上的资料,当然都是英文的。
因此如果现在能够引进一些WPF技术绝对是很好的时机。
而且国外目前的几本WPF书也是刚刚上市,如果我们可以尽快引进的话,绝对可以帮助国内开发人员在最短时间内赶上国际步伐。
1.2国内外研究状况
随着计算机技术的发展,文字信息处理技术也进行着一场革命性的变革,用计算机打字、编辑文稿、排版印刷、管理文档,是五彩缤纷的高效实用新技术的一些具体内容。
优秀的文字处理软件能使用户方便自如地在计算机上编辑、修改文章,这种便利是与在纸上写文章所无法比的。
最早较有影响的是MicroPro公司在1979年研制的WordStar(文字之星,简称WS),并且很快成为畅销的软件。
1982年,微软公司开始了字处理软件的市场争夺,比尔·盖茨将微软开发的这款字处理软件命名为MSWord。
1983年,MSWord正式推出,成千上万的观众被Word1.0版的新功能所倾倒。
人们第一次看到Word使用了一个叫“鼠标”的东西,复杂的键盘操作变成了鼠标“轻轻一点”。
Word还展示了所谓“所见即所得”的新概念,能在屏幕上显示粗体字、底划线和上下角标,能驱动激光打印机印出与书刊印刷质量媲美的文章……这一切造成强烈的轰动效应。
随着1989年Windows的推出和巨大成功,微软的字处理软件Word成为文字处理软件销售的市场主导产品。
早期的字处理软件是以文字为主,现代的字处理软件可以集文字、表格、图形、图像、声音于一体。
1989年香港金山电脑公司推出的WPS(WordProcessingSystem),是完全针对汉字处理重新开发设计的,与WS相比其优点主要表现在:
字体格式丰富、控制灵活、表格制作方便、下拉菜单方便、模拟显示实用有效。
在当时我国的软件市场独占熬头,但不能处理图文并茂的文件。
从WPS97起,吸取了Word软件的优点,功能、操作方式与Word相似,成为国产字处理软件的杰出代表。
从2007年开始,微软推出了它的新一代GUI(图形用户界面)开发工具WindownsPresentationFoundation(WPF),并且把WPF定为未来十年Windows平台GUI开发的主要技术。
而且,由于WindowsPresentationFoundation是窗体、文档、视频、三维以及其他功能的综合,因此可以创建丰富、持久的用户体验,并集成到客户的日常活动中。
WPF作为新兴技术还未得到淋漓尽致的显现,尽管它的一部分成果已投入实际应用,但并未得到广泛应用,因此需要更进一步的发展。
1.3系统设计研究方法
本设计以微软.NETFramework3.0技术为背景,采用如下三个步骤:
1.采用统一编程模型,确定用户界面和逻辑分离的开发框架;
2.使用微软最新开发工具ExpressionBlend开发用户界面和控件,运用WPF提供的控件新特性、新控件,实现程序框架及绚丽的用户界面效果,并将其生成为XMAL资源文档;
3.在VS2010中导入相关资源文档,实现逻辑代码并导入XML数据存储文档,初步实现具有较丰富用户体验的文档编辑功能。
1.4论文构成及研究内容
本论文对WPF开发环境、WPF结构、WPF开发方法进行全面论述,概要说明基于WPF的文档编辑软件如何设计与实现,并在实践基础上简要阐述WPF的优越性。
具体包括以下部分:
1.WPF简介
(1)WPF技术特点
(2)XAML简介
(3)C#简介
2.WPF优越性详细分析
(1)声明式编程
(2)触发器
(3)一致的Style
(4)丰富的应用程序文本
(5)可修改的UI布局
(6)整体优越性
3.文档编辑软件的实现
(1)系统环境
(2)开发环境
(3)总体开发方案
(4)UI设计端开发步骤
(5)程序端开发步骤
第2章WPF简介
2.1WPF技术特点
WPF是WindowsPresentationFoundation的简称,顾名思义是专门用来编写程序表示层的技术和工具。
当今的程序,除了一些非常小巧的实用工具外,大部分程序都是多层架构的程序。
一提到多层架构,一般就至少包含3层:
数据层、业务逻辑层和表示层。
这3层的功能大致如下:
1、数据层:
用于存储数据,多由数据库构成,有时侯也用数据文件辅助存储数据。
比如医院的药品列表、人员列表、病例列表等都存储在这一层。
2、业务逻辑层:
用于根据需求使用计算机程序表达现实的业务逻辑。
比如哪些医生可以给哪些病人看病,从挂号到取药都有什么流程,都可以有这层来实现。
这一层一般会通过一组服务器(Service)向表示层公开自己的各个功能。
因为这一层需要与数据库进行交互,所以经常会划分出一个名为“数据访问层”(DataAccessLayer,DAL)的子层专门负责数据的存取。
3、表示层:
负责把数据和流程展示给用户看。
对于同一组来自业务逻辑层的数据,我们可以选择多种表达方式。
比如对于同一张药品单。
如果想以短信的方式发送给药房,可以以一串字符的形式来表达;如果客户想打印药品单的详细内容,可以以表格的形式来表达;如果客户想直观地看到每种药品占总价格的比例,我们可以使用饼图来表达。
除了用于表示数据,表示层还负责展示流程、响应用户操作等。
而且,表示层程序并不拘泥于桌面程序,很多表示层程序都运行在手机或浏览器里。
表示层程序也常被称为客户端程序。
WPF的功能就是用来编写应用程序的表示层。
在保持代码可维护性的前提下,如何让数据能够顺畅地到达界面并灵活显示,同时方便地接收用户的操作历来都是表示层开发的核心问题。
为此人们研究出了各种各样的设计模式,其中有经久不衰的MVC(Model-View-Controler)模式、MVP(Model-View-Presenter)模式等。
在WPF出现之前,WindowsForms、ASP.NET(WebForms)等技术均使用“事件驱动”理念,这种由“事件→订阅→事件处理器”关系交织在一起构成的程序,尽管可以使用MVC、MVP等设计模式,但是一不小心就会使界面逻辑和业务逻辑纠缠在一起,造成代码变得复杂难懂、bug难以排除。
而WPF技术则是微软在开发理念上的一次升级—由“事件驱动”变成“数据驱动”。
事件驱动时代,用户每进行一个操作就会激发程序发生一个事件,事件发生后,用于响应事件的事件处理器就会执行。
事件处理器是一个方法(函数),在这个方法中,程序员可以处理数据或调用别的方法,这样,程序就在事件的驱动下向前执行了。
可见事件驱动时代的数据是静态的、被动的;界面控件是主动的、界面逻辑与业务逻辑之间的桥梁是事件。
而数据驱动正好相反,当数据发生变化时,会主动通知界面控件、推动控件展示最新的数据;同时,用户对控件的操作会直接送达数据,就好像控件是“透明”的。
可见,在数据驱动理念中,数据占据主动地位、控件和控件事件被弱化(控件事件一般只参与界面逻辑,不再染指业务逻辑,使程序复杂度得到有效控制)。
WPF中,数据与控件的关系就是哲学中内容与形式的关系——内容决定形式所以数据驱动界面,这非常符合哲学原理。
数据与界面之间的桥梁是数据关联(DataBinding),通过这个桥梁,数据可以流向界面,再从界面流回数据源。
简而言之,WPF的开发理念更符合自然哲学的思想。
使用WPF进行开发较之WindowsForms开发要简单,程序更加简洁清晰。
2.2XAML语言简介
WPF框架提供XAML基本服务,XAML的引入向开发者提供UI设计和代码分离的编程模型。
XAML是WPF中提出的一个具有重要意义的新技术,基本涉及WPF中所有UI开发。
下面将详细介绍XAML。
2.2.1XAML综述
XAML(ExtensibleApplicationMarkupLanguage)的中文名为可扩展应用程序标记语言,它是微软公司为构建应用程序用户界面而创建的一种新描述性语言。
XAML提供一种便于扩展和定位的语法来定义和程序逻辑分离的用户界面,而这种实现方式和ASP.NET中的代码后置模型非常类似。
XAML能够很好地将用户界面设计与代码相分离,使图形设计人员可以创建引人注目的、高度精确的用户界面,使开发人员能够将精力集中在应用程序逻辑上。
这个应用程序开发协作模型使开发人员和设计人员能够紧密而有效地协同工作。
这种代码与界面开发分离的编程模型可为程序开发带来如下便利:
1、UI设计者可集中精力将设计工作做得更好,同时可得到更有效的开发者支持。
2、随着软件外包和订购的逐渐风行,WPF使得一些商业设计者能更好的从事界面设计工作,并集成一些简单功能,而购买的核心代码能够独立的完成内部的一些关键逻辑而不干扰设计过程。
3、更好的支持应用软件的国际化。
不同的独立的界面可以使用不同的本地化方案,而内部的代码通用。
4、支持软件的“空标签”,可以为不同的用户采用定制的界面而保持核心的逻辑不变。
开发者创建程序逻辑,然后为不同的用户使用不同的界面并贴上他们的商标等。
XAML简化.NetFramework3.0编程模式中的用户界面创建过程,使用XAML开发人员可以对WPF程序的所有用户界面元素,例如文本、按钮、图像和列表框等进行详细的定置,同时还可以对整个界面进行合理化的布局,这与使用HTML非常相似。
但是由于XAML基于XML,所以它本身是一个组织良好的XML文档,而且相对于HTML,它的语法更严谨、更明确。
大多数的WPF程序可能同时包含程序代码和XAML。
开发者可使用XAML定义应用程序的初始界面,而后才编写相应的功能实现代码。
同时也可将逻辑代码直接嵌入到一个XAML文件中,也可将它保留在一个单独的文件中。
实际上,能够用XAML实现的所有功能都可以使用程序代码来完成。
但一般而言,程序代码的优势在于流程处理和逻辑判断,而不是界面的构建。
而XAML则是集中关注于界面的编程,开发者可以将它和其它的.NET语言配合使用,从而构建出一个功能完善、界面美观的WPF程序。
2.2.2XAML特点
XAML是可扩展的,开发人员可以创建自定义的控件、元素和函数来扩展XAML。
而且由于XAML各元素在本质上就是WPF类的映射,开发人员可以很轻松地使用面向对象的技术对XAML元素进行扩展。
即开发人员可以开发一些自定义控件和组合元素,并将它公开给用户界面设计人员和其它的开发人员使用。
XAML是一种纯正的、用来描述用户界面构成元件和编排方式的标记语言。
尽管有部分的XAML语法具备程序设计语言的特性(例如XAML中的Trigger和Transform),但是XAML并不是一种用于程序设计的语言,它的功能也不是为执行应用程序逻辑。
XAML是一种解析性的语言,尽管它也可以被编译。
微软推荐XAML被编译成二进制语言程序标记语言BAML。
XAML和BAML都可以被WPF解析,并且以一种和HTML相似的方式进行界面的呈现。
但是和HTML不同的是,XAML是强类型化的,即HTML会忽略那些它不能识别的元素和属性,而XAML必须在识别所有的元素和属性的情况下,才对页面进行呈现。
尽管在XAML中各个属性都是以字符串(例如Background)表示,但是这些字符串实际上代表的是WPF中的对象,只有被WPF识别的对象才可以作为元素的属性。
XAML和WPF类库紧密相关,所有可以在XAML中使用的元素其实都是一个类,例如
正是因为上述的继承关系以及XAML中的每个元素均代表一个WPF类,所以XAML也存在一些面向对象体系结构的特性。
例如,一个元素派生自另外的一个XAML元素,那么该元素将继承其父元素的特性。
开发者也可以将自己编写的类用作XAML的元素,正如XAML的中文名称为可扩展应用程序标记语言,任何一个具有公共的无参数的构造函数以及可设置属性的类均可在XAML中使用。
2.3C#简介
WPF提供C#基本服务,C#向开发者提供后台方法的调用。
本次设计中涉及的后台方法调用由C#完成。
下面将详细介绍C#。
2.3.1C#综述
C#(CSharp)是微软(Microsoft)为.NETFramework量身订做的程序语言,微软公司在2000年6月发布的一种新的编程语言。
C#拥有C/C++的强大功能以及VisualBasic简易使用的特性,是第一个组件导向(Component-oriented)的程序语言,和C++与Java一样亦为对象导向(object-oriented)程序语言。
微软C#语言定义主要是从C和C++继承而来的,而且语言中的许多元素也反映了这一点。
C#在设计者从C++继承的可选选项方面比JAVA要广泛一些,它还增加了自己新的特点。
C#还需要进化成一种开发者能够接受和采用的语言。
而微软当前为它的这种新语言大造声势也是值得注意的。
目前大家的反应是:
“这是对JAVA的反击”。
C#更像JAVA一些,虽然微软在这个问题上保持沉默。
这也是意料中的事情,因为JAVA近来很成功而使用JAVA的公司都报告说它们在生产效率上比C++获得了提高。
JAVA所带来的巨大影响和大家对它的广泛接受已经由工作于这种语言和平台之上的程序员数量明显的说明了。
由这种语言写成的应用程序的数量是令人惊讶的并已经渗透了每一个级别的计算,包括无线计算和移动电话。
C#能够在用户领域获得这样的礼遇吗?
我们必须等待并观望,就象已经由SSI公司的CEO和主席KALPATHIS.SURESH指出来的那样:
“我发现所有这些都是渐进的。
如果C#不存在,我们总能回到JAVA或C和C++。
这些都不完全是新技术,它们在更大的意义上来说只是大公司制造的市场噱头。
我们必须给他们时间安顿下来看看这些是不是真的对IT工业有什么影响。
”
C#(CSHARP)是微软对这一问题的解决方案。
C#是一种最新的、面向对象的编程语言。
它使得程序员可以快速地编写各种基于Microsoft.NET平台的应用程序,Microsoft.NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。
正是由于C#面向对象的卓越设计,使它成为构建各类组件的理想之选——无论是高级的商业对象还是系统级的应用程序。
使用简单的C#语言结构,这些组件可以方便的转化为XML网络服务,从而使它们可以由任何语言在任何操作系统上通过Internet进行调用。
最重要的是,C#使得C++程序员可以高效的开发程序,而绝不损失C/C++原有的强大的功能。
因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。
2.3.2C#优势
1、动态查阅:
C#4.0新增dynamic关键字,提供动态编程(dynamicprogramming)把既有的静态对象标记为动态对象,类似javascript,Python或Ruby。
2、具名参数与可选参数:
publicStreamReaderOpenFile(stringpath, intbufferSize=1024){…}调用OpenFile时,顺序可以完全颠倒:
OpenFile(bufferSize:
4096,path:
"foo.txt");
3、中间代码:
微软在用户选择何时MSIL应该编译成机器码的时候是留了很大的余地,微软公司很小心的声称MSIL不是解释性的,而是被编译成了机器码。
它也明白许多程序员认为JAVA程序要不可避免的比C编写的任何东西都要慢,而这种实现方式决定了基于MSIL的程序将在性能上超过“解释性的”JAVA代码。
当然,这一点还需要得到事实证明,因为C#和其他生成MSIL的编译器还没有发布。
但是JavaJIT编译器的普遍存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 基于 WPF 文档 编辑 软件 设计 实现