版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 袃膇蒆袆膂膆薈蠆肈膅蟻裊羄芅莀蚈袀芄蒃袃螆芃薅蚆膅節(jié)蒞羈肁芁蕆螄羆芀蕿羀袂艿螞螂膁艿莁薅肇莈蒃螁羃莇薆薄衿莆芅蝿螅蒞蒈薂膄莄薀袇肀莃螞蝕羆莃莂袆袂莂蒄蚈膀蒁薇襖肆蒀蠆蚇羂葿荿袂羈肆薁蚅襖肅蚃羀膃肄莃螃聿肅蒅罿羅肂薈螂袁膁蝕薄腿膁荿螀肅膀蒂薃肁腿蚄螈羇膈莄蟻袃膇蒆袆膂膆薈蠆肈膅蟻裊羄芅莀蚈袀芄蒃袃螆芃薅蚆膅節(jié)蒞羈肁芁蕆螄羆芀蕿羀袂艿螞螂膁艿莁薅肇莈蒃螁羃莇薆薄衿莆芅蝿螅蒞蒈薂膄莄薀袇肀莃螞蝕羆莃莂袆袂莂蒄蚈膀蒁薇襖肆
2、蒀蠆蚇羂葿荿袂羈肆薁蚅襖肅蚃羀膃肄莃螃聿肅蒅罿羅肂薈螂袁膁蝕薄腿膁荿螀肅膀蒂薃肁腿蚄螈羇膈莄蟻袃膇蒆袆膂膆薈蠆肈膅蟻裊羄芅莀蚈袀芄蒃袃螆芃薅蚆膅節(jié)蒞羈肁芁蕆螄羆芀蕿羀袂艿螞螂膁艿莁薅肇莈蒃螁羃莇薆薄衿莆芅蝿螅蒞蒈薂膄莄薀袇肀莃螞蝕羆莃莂袆袂莂蒄蚈膀蒁薇襖肆蒀蠆蚇羂葿荿袂羈肆薁蚅襖肅蚃羀膃肄莃螃聿肅蒅罿羅肂薈螂袁膁蝕薄腿膁荿螀肅膀蒂薃肁腿蚄螈羇膈莄蟻袃膇蒆袆膂膆薈蠆肈膅蟻裊羄芅莀蚈袀芄蒃袃螆芃薅蚆膅節(jié)蒞羈肁芁蕆螄羆芀蕿羀袂艿螞螂膁艿莁薅肇
3、莈蒃螁羃莇薆薄衿莆芅蝿螅蒞蒈薂膄莄薀袇肀莃螞蝕羆莃莂袆袂莂蒄蚈膀蒁薇襖肆蒀蠆蚇羂葿荿袂羈肆薁蚅襖肅蚃羀膃肄莃螃聿肅蒅罿羅肂薈螂袁膁蝕薄腿膁荿螀</p><p> 基于WPF的文檔編輯軟件的設(shè)計(jì)和實(shí)現(xiàn)</p><p><b> 摘 要</b></p><p> 隨著用戶需求復(fù)雜化,目前大部分應(yīng)用程序已逐漸不能滿足更高、更全方位的用戶體驗(yàn)要求
4、。為給用戶提供更具視覺(jué)效果的體驗(yàn),微軟在最新發(fā)布的Windows Vista開(kāi)發(fā)庫(kù)中引入全新的圖形子系統(tǒng)Windows Presentation Foundation(WPF)。 </p><p> 本設(shè)計(jì)是對(duì)WPF結(jié)構(gòu)及其所提供的技術(shù)和方法進(jìn)行初步探討,并應(yīng)用WPF技術(shù)設(shè)計(jì)實(shí)現(xiàn)文檔編輯軟件。本設(shè)計(jì)以.NET Framework3.0技術(shù)為背景,采用統(tǒng)一編程模型,確定設(shè)計(jì)和代碼分離的開(kāi)發(fā)框架。使用微軟最新開(kāi)發(fā)工
5、具Expression Blend開(kāi)發(fā)用戶界面和控件,運(yùn)用WPF提供的服務(wù)及對(duì)開(kāi)發(fā)和設(shè)計(jì)的統(tǒng)一,實(shí)現(xiàn)文本編輯窗體及豐富的用戶體驗(yàn),并將其生成為XMAL資源文檔。最后在VS2010中導(dǎo)入相關(guān)資源文檔,實(shí)現(xiàn)后臺(tái)邏輯代碼并導(dǎo)入XML數(shù)據(jù)存儲(chǔ)文檔,初步實(shí)現(xiàn)具有較豐富文本編輯功能的文本編輯軟件。</p><p> 關(guān)鍵詞:WPF,XAML,窗體,文本編輯</p><p> The design
6、of WPF-based document editing software </p><p><b> ABSTRACT</b></p><p> As the requirements of users become more and more complex, the majority of applications have gradually faile
7、d to meet users' demand for greater and all-round user experience now. In order to provide more effective visual experience to UI, Microsoft brings out a new graphics subsystem named Windows Presentation Foundation (
8、WPF) in the latest release of Windows Vista development library.</p><p> The main content of the present design is to discuss WPF's structure, the techniques and methods it provides. And with the applic
9、ation of the technology we can realize the design of WPF-based document editing software .On the background of techniques of .NET Framework3.0, the present design uses a unified programming model under which UI and the l
10、ogical code are separated. In this design, the UI and controls are developed by the latest Microsoft development tool, Expression Blend, using WPF prov</p><p> KEY WORDS: WPF, XAML,F(xiàn)orm,Text editing</p&g
11、t;<p><b> 目錄</b></p><p><b> 前 言3</b></p><p><b> 第1章 緒論4</b></p><p> 1.1 課題背景及目的4</p><p> 1.2 國(guó)內(nèi)外研究狀況5</p><
12、;p> 1.3 系統(tǒng)設(shè)計(jì)研究方法6</p><p> 1.4 論文構(gòu)成及研究?jī)?nèi)容6</p><p> 第2章WPF簡(jiǎn)介8</p><p> 2.1 WPF技術(shù)特點(diǎn)8</p><p> 2.2 XAML語(yǔ)言簡(jiǎn)介9</p><p> 2.2.1 XAML綜述9</p><p
13、> 2.2.2 XAML特點(diǎn)11</p><p> 2.3 C#簡(jiǎn)介12</p><p> 2.3.1 C#綜述12</p><p> 2.3.2 C#優(yōu)勢(shì)13</p><p> 第3章 WPF優(yōu)越性詳細(xì)分析15</p><p> 3.1 聲明式編程15</p><p&
14、gt; 3.2 觸發(fā)器16</p><p> 3.3 一致的style16</p><p> 3.4 豐富的應(yīng)用程序文本16</p><p> 3.5 可修改的UI布局17</p><p> 3.6 整體的優(yōu)越性18</p><p> 第4章 文檔編輯軟件的實(shí)現(xiàn)19</p><
15、;p> 4.1 系統(tǒng)環(huán)境19</p><p> 4.2 開(kāi)發(fā)環(huán)境19</p><p> 4.2.1 Microsoft .NET Framework 3.019</p><p> 4.2.2 WinFX Software Development Kit (SDK)19</p><p> 4.2.3 Visual Stu
16、dio 201019</p><p> 4.2.4 Visual Studio 2010 Extensions for WCF, WPF19</p><p> 4.2.5 Microsoft Expression Blend20</p><p> 4.3 總體開(kāi)發(fā)方案20</p><p> 4.4 UI設(shè)計(jì)端開(kāi)發(fā)步驟21&l
17、t;/p><p> 4.4.1 開(kāi)發(fā)應(yīng)用程序框架21</p><p> 4.4.2 開(kāi)發(fā)控件22</p><p> 4.4.3 設(shè)計(jì)應(yīng)用程序風(fēng)格24</p><p> 4.4.4 UI設(shè)計(jì)端總結(jié)24</p><p> 4.5 程序端開(kāi)發(fā)步驟24</p><p> 4.5.1 聲
18、明資源文件整合UI設(shè)計(jì)24</p><p> 4.5.2 編寫(xiě)輔助代碼25</p><p> 4.5.3 編寫(xiě)其他后臺(tái)代碼27</p><p><b> 結(jié) 論28</b></p><p><b> 謝 辭29</b></p><p><b>
19、參考文獻(xiàn)30</b></p><p><b> 外文資料翻譯32</b></p><p><b> 前 言</b></p><p> 微軟Windows操作系統(tǒng)成功推出已有十多年,在Windows系統(tǒng)平臺(tái)上從事圖形用戶界面(Graphic User Interface ,GUI)程序開(kāi)發(fā)的程序員數(shù)不勝
20、數(shù)。GUI程序員們手中的開(kāi)發(fā)工具經(jīng)歷了Win32API→MFC(及同類(lèi)產(chǎn)品)→ActiveX/COM/Visual Basic→Windows Forms的變遷,每一次變遷都使開(kāi)發(fā)效率和質(zhì)量產(chǎn)生飛躍。從2007年開(kāi)始,微軟推出了它的新一代GUI開(kāi)發(fā)工具Windows Presentation Foundation(直譯為Windows表示基礎(chǔ),WPF),并且把WPF定為未來(lái)十年Windows平臺(tái)GUI開(kāi)發(fā)的主要技術(shù)。時(shí)至今日,不但Win
21、dows Vista、Windows 7、Windows Server 2008、Windows Server 2008R2等系統(tǒng)已經(jīng)無(wú)縫集成了WPF,連Visual Studio 2010等重要產(chǎn)品也已使用WPF進(jìn)行開(kāi)發(fā)。</p><p> 隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,文本編輯器成為大家必不可少的工具,但是不同的用戶對(duì)文本編輯器有不同的功能需求,所以除了像Office中的Word還有WPS等大眾文本編輯器,還需
22、要一些帶有一定相關(guān)專業(yè)功能的文本編輯器,可以方便用戶進(jìn)行工作與開(kāi)發(fā)。考慮到WPF具有更廣闊的可操作空間、更高的執(zhí)行效率和更豐富的本地資源支持。本畢業(yè)設(shè)計(jì)選定以WPF為基礎(chǔ),系統(tǒng)了解Framework3.0開(kāi)發(fā)基礎(chǔ)和WPF應(yīng)用環(huán)境。通過(guò)引入統(tǒng)一的編程模型,運(yùn)用WPF提供的控件新特性,實(shí)現(xiàn)文檔編輯功能。文字編輯功能的實(shí)現(xiàn)如:字體、字號(hào)、加粗、傾斜、下劃線以及段落格式的設(shè)置,也可以在文檔中添加圖片、表格;文本編輯功能的實(shí)現(xiàn),如文檔的打開(kāi)、文本
23、的保存、自動(dòng)生成HTML;創(chuàng)建超鏈接:點(diǎn)擊超鏈接按鈕可直接實(shí)現(xiàn)鏈接功能。這些功能實(shí)現(xiàn)了豐富用戶體驗(yàn)、強(qiáng)化人機(jī)交互性能、優(yōu)化用戶界面的目的。</p><p><b> 第1章 緒論</b></p><p> 1.1 課題背景及目的</p><p> Windows Presentation Foundation 是窗體、文檔、視頻、三維以及
24、其他功能的綜合,因此企業(yè)可以創(chuàng)建持久的用戶體驗(yàn)解決方案,并集成到客戶的日常活動(dòng)中。Windows Presentation Foundation 為開(kāi)發(fā)人員和設(shè)計(jì)人員提供了統(tǒng)一的 UI 平臺(tái),因此他們只需學(xué)習(xí)一個(gè)模式,就可以獲得無(wú)限可能的 UI 體驗(yàn)。對(duì)于.NET 開(kāi)發(fā)人員,其框架是熟悉的,并且它最終將減少提供最佳用戶體驗(yàn)和通信邏輯所需的代碼行數(shù)。對(duì)于設(shè)計(jì)人員,Windows Presentation Foundation 提供的平臺(tái)可
25、消除內(nèi)容、媒體和應(yīng)用程序之間的邊界。最重要的是,Windows Presentation Foundation 可以使開(kāi)發(fā)人員和設(shè)計(jì)人員同步緊密地合作來(lái)快速提供不同的連通體驗(yàn)。因此,WPF的開(kāi)發(fā)理念更符合自然哲學(xué)的思想。它也將給Windows應(yīng)用程序的開(kāi)發(fā)帶來(lái)一次革命,因?yàn)樾碌募軜?gòu)提供了一種全新的開(kāi)發(fā)模式。</p><p> 當(dāng)然對(duì)于普通用戶而言,最直觀的就是界面越來(lái)越漂亮,看起來(lái)越來(lái)越舒服了;但對(duì)于開(kāi)發(fā)人員而
26、言,界面顯示和代碼將更好的得到分離,這與從前的桌面應(yīng)用程序開(kāi)發(fā)有很多不同(界面設(shè)置和代碼是融合在一起的),這是比較具有革命性的改變之一。使用WPF進(jìn)行開(kāi)發(fā)較之Windows Forms開(kāi)發(fā)要簡(jiǎn)單,程序更加簡(jiǎn)潔清晰。微軟已經(jīng)把WPF的理念擴(kuò)展到了幾乎全部平臺(tái),包括桌面平臺(tái)、瀏覽器平臺(tái)和手機(jī)平臺(tái)。所以WPF的發(fā)展前景非常好、回報(bào)也很大。</p><p> 目前已有很多人開(kāi)始考慮或者已經(jīng)轉(zhuǎn)向WPF,一場(chǎng)新的學(xué)習(xí)熱潮已
27、經(jīng)開(kāi)始。但根據(jù)我最近的學(xué)習(xí)和了解,國(guó)內(nèi)關(guān)于WPF的資料很少,除了MSDN提供的資料以外,基本都是來(lái)自國(guó)外的資料,有些則是國(guó)外開(kāi)發(fā)人員BLOG上的資料,當(dāng)然都是英文的。因此如果現(xiàn)在能夠引進(jìn)一些WPF技術(shù)絕對(duì)是很好的時(shí)機(jī)。而且國(guó)外目前的幾本W(wǎng)PF書(shū)也是剛剛上市,如果我們可以盡快引進(jìn)的話,絕對(duì)可以幫助國(guó)內(nèi)開(kāi)發(fā)人員在最短時(shí)間內(nèi)趕上國(guó)際步伐。</p><p> 1.2 國(guó)內(nèi)外研究狀況</p><p&g
28、t; 隨著計(jì)算機(jī)技術(shù)的發(fā)展,文字信息處理技術(shù)也進(jìn)行著一場(chǎng)革命性的變革,用計(jì)算機(jī)打字、編輯文稿、排版印刷、管理文檔,是五彩繽紛的高效實(shí)用新技術(shù)的一些具體內(nèi)容。優(yōu)秀的文字處理軟件能使用戶方便自如地在計(jì)算機(jī)上編輯、修改文章,這種便利是與在紙上寫(xiě)文章所無(wú)法比的。</p><p> 最早較有影響的是MicroPro公司在1979年研制的WordStar(文字之星,簡(jiǎn)稱WS),并且很快成為暢銷(xiāo)的軟件。1982年,微軟公司
29、開(kāi)始了字處理軟件的市場(chǎng)爭(zhēng)奪,比爾·蓋茨將微軟開(kāi)發(fā)的這款字處理軟件命名為MSWord。1983年,MSWord正式推出,成千上萬(wàn)的觀眾被Word1.0版的新功能所傾倒。人們第一次看到Word使用了一個(gè)叫“鼠標(biāo)”的東西,復(fù)雜的鍵盤(pán)操作變成了鼠標(biāo)“輕輕一點(diǎn)”。Word還展示了所謂“所見(jiàn)即所得”的新概念,能在屏幕上顯示粗體字、底劃線和上下角標(biāo),能驅(qū)動(dòng)激光打印機(jī)印出與書(shū)刊印刷質(zhì)量媲美的文章……這一切造成強(qiáng)烈的轟動(dòng)效應(yīng)。隨著1989年Wi
30、ndows的推出和巨大成功,微軟的字處理軟件Word成為文字處理軟件銷(xiāo)售的市場(chǎng)主導(dǎo)產(chǎn)品。早期的字處理軟件是以文字為主,現(xiàn)代的字處理軟件可以集文字、表格、圖形、圖像、聲音于一體。1989年香港金山電腦公司推出的WPS(Word Processing System),是完全針對(duì)漢字處理重新開(kāi)發(fā)設(shè)計(jì)的,與WS相比其優(yōu)點(diǎn)主要表現(xiàn)在:字體格式豐富、控制靈活、表格制作方便、下拉菜單方便、模擬顯示實(shí)用有效。在當(dāng)時(shí)我國(guó)的軟件市場(chǎng)獨(dú)占熬頭,但不能<
31、/p><p> 從2007年開(kāi)始,微軟推出了它的新一代GUI(圖形用戶界面)開(kāi)發(fā)工具Windowns Presentation Foundation(WPF),并且把WPF定為未來(lái)十年Windows平臺(tái)GUI開(kāi)發(fā)的主要技術(shù)。而且,由于 Windows Presentation Foundation 是窗體、文檔、視頻、三維以及其他功能的綜合,因此可以創(chuàng)建豐富、持久的用戶體驗(yàn),并集成到客戶的日常活動(dòng)中。WPF作為新興
32、技術(shù)還未得到淋漓盡致的顯現(xiàn),盡管它的一部分成果已投入實(shí)際應(yīng)用,但并未得到廣泛應(yīng)用,因此需要更進(jìn)一步的發(fā)展。</p><p> 1.3 系統(tǒng)設(shè)計(jì)研究方法</p><p> 本設(shè)計(jì)以微軟.NET Framework3.0技術(shù)為背景,采用如下三個(gè)步驟:</p><p> 1.采用統(tǒng)一編程模型,確定用戶界面和邏輯分離的開(kāi)發(fā)框架;</p><p>
33、; 2.使用微軟最新開(kāi)發(fā)工具Expression Blend開(kāi)發(fā)用戶界面和控件,運(yùn)用WPF提供的控件新特性、新控件,實(shí)現(xiàn)程序框架及絢麗的用戶界面效果,并將其生成為XMAL資源文檔;</p><p> 3.在VS2010中導(dǎo)入相關(guān)資源文檔,實(shí)現(xiàn)邏輯代碼并導(dǎo)入XML數(shù)據(jù)存儲(chǔ)文檔,初步實(shí)現(xiàn)具有較豐富用戶體驗(yàn)的文檔編輯功能。</p><p> 1.4 論文構(gòu)成及研究?jī)?nèi)容</p>
34、<p> 本論文對(duì)WPF開(kāi)發(fā)環(huán)境、WPF結(jié)構(gòu)、WPF開(kāi)發(fā)方法進(jìn)行全面論述,概要說(shuō)明基于WPF的文檔編輯軟件如何設(shè)計(jì)與實(shí)現(xiàn),并在實(shí)踐基礎(chǔ)上簡(jiǎn)要闡述WPF的優(yōu)越性。具體包括以下部分:</p><p><b> 1. WPF簡(jiǎn)介</b></p><p> (1) WPF技術(shù)特點(diǎn)</p><p> (2) XAML簡(jiǎn)介</p&
35、gt;<p><b> (3) C#簡(jiǎn)介</b></p><p> 2. WPF優(yōu)越性詳細(xì)分析</p><p><b> (1) 聲明式編程</b></p><p><b> (2) 觸發(fā)器</b></p><p> (3) 一致的Style</p
36、><p> (4) 豐富的應(yīng)用程序文本</p><p> (5) 可修改的UI布局</p><p><b> (6) 整體優(yōu)越性</b></p><p> 3.文檔編輯軟件的實(shí)現(xiàn)</p><p><b> (1) 系統(tǒng)環(huán)境</b></p><p>
37、;<b> (2) 開(kāi)發(fā)環(huán)境</b></p><p> (3) 總體開(kāi)發(fā)方案</p><p> (4) UI設(shè)計(jì)端開(kāi)發(fā)步驟</p><p> (5) 程序端開(kāi)發(fā)步驟</p><p><b> 第2章WPF簡(jiǎn)介</b></p><p> 2.1 WPF技術(shù)特點(diǎn)<
38、;/p><p> WPF是Windows Presentation Foundation的簡(jiǎn)稱,顧名思義是專門(mén)用來(lái)編寫(xiě)程序表示層的技術(shù)和工具。當(dāng)今的程序,除了一些非常小巧的實(shí)用工具外,大部分程序都是多層架構(gòu)的程序。一提到多層架構(gòu),一般就至少包含3層:數(shù)據(jù)層、業(yè)務(wù)邏輯層和表示層。這3層的功能大致如下:</p><p> 1、數(shù)據(jù)層:用于存儲(chǔ)數(shù)據(jù),多由數(shù)據(jù)庫(kù)構(gòu)成,有時(shí)侯也用數(shù)據(jù)文件輔助存儲(chǔ)數(shù)據(jù)
39、。比如醫(yī)院的藥品列表、人員列表、病例列表等都存儲(chǔ)在這一層。</p><p> 2、業(yè)務(wù)邏輯層:用于根據(jù)需求使用計(jì)算機(jī)程序表達(dá)現(xiàn)實(shí)的業(yè)務(wù)邏輯。比如哪些醫(yī)生可以給哪些病人看病,從掛號(hào)到取藥都有什么流程,都可以有這層來(lái)實(shí)現(xiàn)。這一層一般會(huì)通過(guò)一組服務(wù)器(Service)向表示層公開(kāi)自己的各個(gè)功能。因?yàn)檫@一層需要與數(shù)據(jù)庫(kù)進(jìn)行交互,所以經(jīng)常會(huì)劃分出一個(gè)名為“數(shù)據(jù)訪問(wèn)層”(Data Access Layer,DAL)的子層專
40、門(mén)負(fù)責(zé)數(shù)據(jù)的存取。</p><p> 3、表示層:負(fù)責(zé)把數(shù)據(jù)和流程展示給用戶看。對(duì)于同一組來(lái)自業(yè)務(wù)邏輯層的數(shù)據(jù),我們可以選擇多種表達(dá)方式。比如對(duì)于同一張藥品單。如果想以短信的方式發(fā)送給藥房,可以以一串字符的形式來(lái)表達(dá);如果客戶想打印藥品單的詳細(xì)內(nèi)容,可以以表格的形式來(lái)表達(dá);如果客戶想直觀地看到每種藥品占總價(jià)格的比例,我們可以使用餅圖來(lái)表達(dá)。除了用于表示數(shù)據(jù),表示層還負(fù)責(zé)展示流程、響應(yīng)用戶操作等。而且,表示層程序
41、并不拘泥于桌面程序,很多表示層程序都運(yùn)行在手機(jī)或?yàn)g覽器里。表示層程序也常被稱為客戶端程序。</p><p> WPF的功能就是用來(lái)編寫(xiě)應(yīng)用程序的表示層。在保持代碼可維護(hù)性的前提下,如何讓數(shù)據(jù)能夠順暢地到達(dá)界面并靈活顯示,同時(shí)方便地接收用戶的操作歷來(lái)都是表示層開(kāi)發(fā)的核心問(wèn)題。為此人們研究出了各種各樣的設(shè)計(jì)模式,其中有經(jīng)久不衰的MVC(Model-View-Controler)模式、MVP(Model-View-P
42、resenter)模式等。在WPF出現(xiàn)之前,Windows Forms、ASP.NET(Web Forms)等技術(shù)均使用“事件驅(qū)動(dòng)”理念,這種由“事件→訂閱→事件處理器”關(guān)系交織在一起構(gòu)成的程序,盡管可以使用MVC、MVP等設(shè)計(jì)模式,但是一不小心就會(huì)使界面邏輯和業(yè)務(wù)邏輯糾纏在一起,造成代碼變得復(fù)雜難懂、bug難以排除。而WPF技術(shù)則是微軟在開(kāi)發(fā)理念上的一次升級(jí)—由“事件驅(qū)動(dòng)”變成“數(shù)據(jù)驅(qū)動(dòng)”。</p><p>
43、 事件驅(qū)動(dòng)時(shí)代,用戶每進(jìn)行一個(gè)操作就會(huì)激發(fā)程序發(fā)生一個(gè)事件,事件發(fā)生后,用于響應(yīng)事件的事件處理器就會(huì)執(zhí)行。事件處理器是一個(gè)方法(函數(shù)),在這個(gè)方法中,程序員可以處理數(shù)據(jù)或調(diào)用別的方法,這樣,程序就在事件的驅(qū)動(dòng)下向前執(zhí)行了??梢?jiàn)事件驅(qū)動(dòng)時(shí)代的數(shù)據(jù)是靜態(tài)的、被動(dòng)的;界面控件是主動(dòng)的、界面邏輯與業(yè)務(wù)邏輯之間的橋梁是事件。而數(shù)據(jù)驅(qū)動(dòng)正好相反,當(dāng)數(shù)據(jù)發(fā)生變化時(shí),會(huì)主動(dòng)通知界面控件、推動(dòng)控件展示最新的數(shù)據(jù);同時(shí),用戶對(duì)控件的操作會(huì)直接送達(dá)數(shù)據(jù),就好
44、像控件是“透明”的。可見(jiàn),在數(shù)據(jù)驅(qū)動(dòng)理念中,數(shù)據(jù)占據(jù)主動(dòng)地位、控件和控件事件被弱化(控件事件一般只參與界面邏輯,不再染指業(yè)務(wù)邏輯,使程序復(fù)雜度得到有效控制)。WPF中,數(shù)據(jù)與控件的關(guān)系就是哲學(xué)中內(nèi)容與形式的關(guān)系——內(nèi)容決定形式所以數(shù)據(jù)驅(qū)動(dòng)界面,這非常符合哲學(xué)原理。數(shù)據(jù)與界面之間的橋梁是數(shù)據(jù)關(guān)聯(lián)(Data Binding),通過(guò)這個(gè)橋梁,數(shù)據(jù)可以流向界面,再?gòu)慕缑媪骰財(cái)?shù)據(jù)源。</p><p> 簡(jiǎn)而言之,WPF的
45、開(kāi)發(fā)理念更符合自然哲學(xué)的思想。使用WPF進(jìn)行開(kāi)發(fā)較之Windows Forms開(kāi)發(fā)要簡(jiǎn)單,程序更加簡(jiǎn)潔清晰。</p><p> 2.2 XAML語(yǔ)言簡(jiǎn)介</p><p> WPF框架提供XAML基本服務(wù),XAML的引入向開(kāi)發(fā)者提供UI設(shè)計(jì)和代碼分離的編程模型。XAML是WPF中提出的一個(gè)具有重要意義的新技術(shù),基本涉及WPF中所有UI開(kāi)發(fā)。下面將詳細(xì)介紹XAML。</p>
46、<p> 2.2.1 XAML綜述</p><p> XAML(Extensible Application Markup Language)的中文名為可擴(kuò)展應(yīng)用程序標(biāo)記語(yǔ)言,它是微軟公司為構(gòu)建應(yīng)用程序用戶界面而創(chuàng)建的一種新描述性語(yǔ)言。XAML提供一種便于擴(kuò)展和定位的語(yǔ)法來(lái)定義和程序邏輯分離的用戶界面,而這種實(shí)現(xiàn)方式和ASP.NET中的代碼后置模型非常類(lèi)似。XAML能夠很好地將用戶界面設(shè)計(jì)與代碼相分
47、離,使圖形設(shè)計(jì)人員可以創(chuàng)建引人注目的、高度精確的用戶界面,使開(kāi)發(fā)人員能夠?qū)⒕性趹?yīng)用程序邏輯上。這個(gè)應(yīng)用程序開(kāi)發(fā)協(xié)作模型使開(kāi)發(fā)人員和設(shè)計(jì)人員能夠緊密而有效地協(xié)同工作。這種代碼與界面開(kāi)發(fā)分離的編程模型可為程序開(kāi)發(fā)帶來(lái)如下便利: </p><p> 1、UI設(shè)計(jì)者可集中精力將設(shè)計(jì)工作做得更好,同時(shí)可得到更有效的開(kāi)發(fā)者支持。</p><p> 2、隨著軟件外包和訂購(gòu)的逐漸風(fēng)行,WPF使
48、得一些商業(yè)設(shè)計(jì)者能更好的從事界面設(shè)計(jì)工作,并集成一些簡(jiǎn)單功能,而購(gòu)買(mǎi)的核心代碼能夠獨(dú)立的完成內(nèi)部的一些關(guān)鍵邏輯而不干擾設(shè)計(jì)過(guò)程。</p><p> 3、更好的支持應(yīng)用軟件的國(guó)際化。不同的獨(dú)立的界面可以使用不同的本地化方案,而內(nèi)部的代碼通用。</p><p> 4、支持軟件的“空標(biāo)簽”,可以為不同的用戶采用定制的界面而保持核心的邏輯不變。開(kāi)發(fā)者創(chuàng)建程序邏輯,然后為不同的用戶使用不同的界面
49、并貼上他們的商標(biāo)等。 </p><p> XAML簡(jiǎn)化.Net Framework 3.0編程模式中的用戶界面創(chuàng)建過(guò)程,使用XAML開(kāi)發(fā)人員可以對(duì)WPF程序的所有用戶界面元素,例如文本、按鈕、圖像和列表框等進(jìn)行詳細(xì)的定置,同時(shí)還可以對(duì)整個(gè)界面進(jìn)行合理化的布局,這與使用HTML非常相似。但是由于XAML基于XML,所以它本身是一個(gè)組織良好的XML文檔,而且相對(duì)于HTML,它的語(yǔ)法更嚴(yán)謹(jǐn)、更明確。</p>
50、;<p> 大多數(shù)的WPF程序可能同時(shí)包含程序代碼和XAML。開(kāi)發(fā)者可使用XAML定義應(yīng)用程序的初始界面,而后才編寫(xiě)相應(yīng)的功能實(shí)現(xiàn)代碼。同時(shí)也可將邏輯代碼直接嵌入到一個(gè)XAML文件中,也可將它保留在一個(gè)單獨(dú)的文件中。實(shí)際上,能夠用XAML實(shí)現(xiàn)的所有功能都可以使用程序代碼來(lái)完成。但一般而言,程序代碼的優(yōu)勢(shì)在于流程處理和邏輯判斷,而不是界面的構(gòu)建。而XAML則是集中關(guān)注于界面的編程,開(kāi)發(fā)者可以將它和其它的.NET語(yǔ)言配合使用
51、,從而構(gòu)建出一個(gè)功能完善、界面美觀的WPF程序。</p><p> 2.2.2 XAML特點(diǎn)</p><p> XAML是可擴(kuò)展的,開(kāi)發(fā)人員可以創(chuàng)建自定義的控件、元素和函數(shù)來(lái)擴(kuò)展XAML。而且由于XAML各元素在本質(zhì)上就是WPF類(lèi)的映射,開(kāi)發(fā)人員可以很輕松地使用面向?qū)ο蟮募夹g(shù)對(duì)XAML元素進(jìn)行擴(kuò)展。即開(kāi)發(fā)人員可以開(kāi)發(fā)一些自定義控件和組合元素,并將它公開(kāi)給用戶界面設(shè)計(jì)人員和其它的開(kāi)發(fā)人員
52、使用。</p><p> XAML是一種純正的、用來(lái)描述用戶界面構(gòu)成元件和編排方式的標(biāo)記語(yǔ)言。盡管有部分的XAML語(yǔ)法具備程序設(shè)計(jì)語(yǔ)言的特性(例如XAML中的Trigger和Transform),但是XAML并不是一種用于程序設(shè)計(jì)的語(yǔ)言,它的功能也不是為執(zhí)行應(yīng)用程序邏輯。</p><p> XAML是一種解析性的語(yǔ)言,盡管它也可以被編譯。微軟推薦XAML被編譯成二進(jìn)制語(yǔ)言程序標(biāo)記語(yǔ)言B
53、AML。XAML和BAML都可以被WPF解析,并且以一種和HTML相似的方式進(jìn)行界面的呈現(xiàn)。但是和HTML不同的是,XAML是強(qiáng)類(lèi)型化的,即HTML會(huì)忽略那些它不能識(shí)別的元素和屬性,而XAML必須在識(shí)別所有的元素和屬性的情況下,才對(duì)頁(yè)面進(jìn)行呈現(xiàn)。盡管在XAML中各個(gè)屬性都是以字符串(例如Background)表示,但是這些字符串實(shí)際上代表的是WPF中的對(duì)象,只有被WPF識(shí)別的對(duì)象才可以作為元素的屬性。</p><p&
54、gt; XAML和WPF類(lèi)庫(kù)緊密相關(guān),所有可以在XAML中使用的元素其實(shí)都是一個(gè)類(lèi),例如<Button>元素就與類(lèi)庫(kù)中的System Windows Controls Button相對(duì)應(yīng)。正是因?yàn)樯鲜龅睦^承關(guān)系以及XAML中的每個(gè)元素均代表一個(gè)WPF類(lèi),所以XAML也存在一些面向?qū)ο篌w系結(jié)構(gòu)的特性。例如,一個(gè)元素派生自另外的一個(gè)XAML元素,那么該元素將繼承其父元素的特性。開(kāi)發(fā)者也可以將自己編寫(xiě)的類(lèi)用作XAML的元素,正如
55、XAML的中文名稱為可擴(kuò)展應(yīng)用程序標(biāo)記語(yǔ)言,任何一個(gè)具有公共的無(wú)參數(shù)的構(gòu)造函數(shù)以及可設(shè)置屬性的類(lèi)均可在XAML中使用。</p><p><b> 2.3 C#簡(jiǎn)介</b></p><p> WPF提供C#基本服務(wù),C#向開(kāi)發(fā)者提供后臺(tái)方法的調(diào)用。本次設(shè)計(jì)中涉及的后臺(tái)方法調(diào)用由C#完成。下面將詳細(xì)介紹C#。</p><p> 2.3.1 C
56、#綜述</p><p> C#(C Sharp)是微軟(Microsoft)為.NET Framework量身訂做的程序語(yǔ)言,微軟公司在2000年6月發(fā)布的一種新的編程語(yǔ)言。C#擁有C/C++的強(qiáng)大功能以及Visual Basic簡(jiǎn)易使用的特性,是第一個(gè)組件導(dǎo)向(Component-oriented)的程序語(yǔ)言,和C++與Java一樣亦為對(duì)象導(dǎo)向(object-oriented)程序語(yǔ)言。</p>
57、<p> 微軟C#語(yǔ)言定義主要是從C和C++繼承而來(lái)的,而且語(yǔ)言中的許多元素也反映了這一點(diǎn)。C#在設(shè)計(jì)者從C++繼承的可選選項(xiàng)方面比JAVA要廣泛一些,它還增加了自己新的特點(diǎn)。C#還需要進(jìn)化成一種開(kāi)發(fā)者能夠接受和采用的語(yǔ)言。而微軟當(dāng)前為它的這種新語(yǔ)言大造聲勢(shì)也是值得注意的。目前大家的反應(yīng)是:“這是對(duì)JAVA的反擊”。C#更像JAVA一些,雖然微軟在這個(gè)問(wèn)題上保持沉默。這也是意料中的事情,因?yàn)镴AVA近來(lái)很成功而使用JAVA
58、的公司都報(bào)告說(shuō)它們?cè)谏a(chǎn)效率上比C++獲得了提高。 </p><p> JAVA所帶來(lái)的巨大影響和大家對(duì)它的廣泛接受已經(jīng)由工作于這種語(yǔ)言和平臺(tái)之上的程序員數(shù)量明顯的說(shuō)明了。由這種語(yǔ)言寫(xiě)成的應(yīng)用程序的數(shù)量是令人驚訝的并已經(jīng)滲透了每一個(gè)級(jí)別的計(jì)算,包括無(wú)線計(jì)算和移動(dòng)電話。C#能夠在用戶領(lǐng)域獲得這樣的禮遇嗎?我們必須等待并觀望,就象已經(jīng)由SSI公司的CEO和主席KALPATHI S. SURESH指出來(lái)的那樣:“
59、我發(fā)現(xiàn)所有這些都是漸進(jìn)的。如果C#不存在,我們總能回到JAVA或C和C++。這些都不完全是新技術(shù),它們?cè)诟蟮囊饬x上來(lái)說(shuō)只是大公司制造的市場(chǎng)噱頭。我們必須給他們時(shí)間安頓下來(lái)看看這些是不是真的對(duì)IT工業(yè)有什么影響?!? </p><p> C# (C SHARP)是微軟對(duì)這一問(wèn)題的解決方案。C#是一種最新的、面向?qū)ο蟮木幊陶Z(yǔ)言。它使得程序員可以快速地編寫(xiě)各種基于Microsoft .NET平臺(tái)的應(yīng)用程序,Mic
60、rosoft .NET提供了一系列的工具和服務(wù)來(lái)最大程度地開(kāi)發(fā)利用計(jì)算與通訊領(lǐng)域。正是由于C#面向?qū)ο蟮淖吭皆O(shè)計(jì),使它成為構(gòu)建各類(lèi)組件的理想之選——無(wú)論是高級(jí)的商業(yè)對(duì)象還是系統(tǒng)級(jí)的應(yīng)用程序。使用簡(jiǎn)單的C#語(yǔ)言結(jié)構(gòu),這些組件可以方便的轉(zhuǎn)化為XML網(wǎng)絡(luò)服務(wù),從而使它們可以由任何語(yǔ)言在任何操作系統(tǒng)上通過(guò)Internet進(jìn)行調(diào)用。最重要的是,C#使得C++程序員可以高效的開(kāi)發(fā)程序,而絕不損失C/C++原有的強(qiáng)大的功能。因?yàn)檫@種繼承關(guān)系,C#與C
61、/C++具有極大的相似性,熟悉類(lèi)似語(yǔ)言的開(kāi)發(fā)者可以很快的轉(zhuǎn)向C#。</p><p> 2.3.2 C#優(yōu)勢(shì)</p><p> 1、動(dòng)態(tài)查閱:C# 4.0 新增 dynamic關(guān)鍵字,提供動(dòng)態(tài)編程(dynamic programming)把既有的靜態(tài)對(duì)象標(biāo)記為動(dòng)態(tài)對(duì)象,類(lèi)似javascript,Python或 Ruby。</p><p> 2、具名參數(shù)與可選參數(shù)
62、:public StreamReader OpenFile(string path, int bufferSize =1024) {…}調(diào)用OpenFile 時(shí),順序可以完全顛倒:OpenFile(bufferSize:4096,path:"foo.txt");</p><p> 3、中間代碼:微軟在用戶選擇何時(shí)MSIL應(yīng)該編譯成機(jī)器碼的時(shí)候是留了很大的余地,微軟公司很小心的聲稱MSIL
63、不是解釋性的,而是被編譯成了機(jī)器碼。它也明白許多程序員認(rèn)為JAVA程序要不可避免的比C編寫(xiě)的任何東西都要慢,而這種實(shí)現(xiàn)方式?jīng)Q定了基于MSIL的程序?qū)⒃谛阅苌铣^(guò)“解釋性的”JAVA代碼。當(dāng)然,這一點(diǎn)還需要得到事實(shí)證明,因?yàn)镃#和其他生成MSIL的編譯器還沒(méi)有發(fā)布。但是Java JIT編譯器的普遍存在使得JAVA和C#在性能上相對(duì)相同,像“C#是編譯語(yǔ)言而JAVA是解釋性的”之類(lèi)的聲明只是商業(yè)技巧。JAVA的中間代碼和MSIL都是中間的匯
64、編形式的語(yǔ)言,它們?cè)谶\(yùn)行時(shí)或其它的時(shí)候被編譯成機(jī)器代碼。</p><p> 4、命名空間中的申明:當(dāng)你創(chuàng)建一個(gè)程序的時(shí)候,你在一個(gè)命名空間里創(chuàng)建了一個(gè)或多個(gè)類(lèi),同在這個(gè)命名空間里(在類(lèi)的外面)你還有可能聲明界面,枚舉類(lèi)型和結(jié)構(gòu)體。必須使用using關(guān)鍵字來(lái)引用其他命名空間的內(nèi)容。</p><p> 5、基本的數(shù)據(jù)類(lèi)型:C#擁有比C/C++或者JAVA更廣泛的數(shù)據(jù)類(lèi)型。這些類(lèi)型是bool
65、、byte、ubyte、short、ushort、int、uint、long、ulong、float、double和decimal。像Java一樣,所有這些類(lèi)型都有一個(gè)固定的大小,又像C和C++一樣,每個(gè)數(shù)據(jù)類(lèi)型都有有符號(hào)和無(wú)符號(hào)兩種類(lèi)型。與JAVA相同的是,一個(gè)字符變量包含的是一個(gè)16位的Unicode字符。C#新的數(shù)據(jù)類(lèi)型是decimal數(shù)據(jù)類(lèi)型,對(duì)于貨幣數(shù)據(jù),它能存放28位10進(jìn)制數(shù)字。</p><p>
66、 6、兩個(gè)基本類(lèi):一個(gè)名叫object的類(lèi)是所有其他類(lèi)的基類(lèi)。而一個(gè)名叫string的類(lèi)也像object一樣是這個(gè)語(yǔ)言的一部分。作為語(yǔ)言的一部分存在意味著編譯器有可能使用它,無(wú)論何時(shí)你在程序中寫(xiě)入一句帶引號(hào)的字符串,編譯器會(huì)創(chuàng)建一個(gè)string對(duì)象來(lái)保存它。</p><p> 7、參數(shù)傳遞:方法可以被聲明接受可變數(shù)目的參數(shù)。缺省的參數(shù)傳遞方法是對(duì)基本數(shù)據(jù)類(lèi)型進(jìn)行值傳遞。ref關(guān)鍵字可以用來(lái)強(qiáng)迫一個(gè)變量通過(guò)引用傳
67、遞,這使得一個(gè)變量可以接受一個(gè)返回值。out關(guān)鍵字也能聲明引用傳遞過(guò)程,與ref不同的地方是,它指明這個(gè)參數(shù)并不需要初始值。</p><p> 8、與COM的集成:C#對(duì)Windows程序最大的賣(mài)點(diǎn)可能就是它與COM的無(wú)縫集成了,COM就是微軟的Win32組件技術(shù)。實(shí)際上,最終有可能在任何.NET語(yǔ)言里編寫(xiě)COM客戶和服務(wù)器端。C#編寫(xiě)的類(lèi)可以子類(lèi)化一個(gè)已存在的COM組件,生成的類(lèi)也能被作為一個(gè)COM組件使用,
68、然后又能使用,比方說(shuō),Jscript語(yǔ)言子類(lèi)化它從而得到第三個(gè)COM組件。這種現(xiàn)象的結(jié)果是導(dǎo)致了一個(gè)運(yùn)行環(huán)境的產(chǎn)生,在這個(gè)環(huán)境里的組件是網(wǎng)絡(luò)服務(wù),可用任何.NET語(yǔ)言子類(lèi)化。</p><p> 9、索引下標(biāo):一個(gè)索引與屬性除了不使用屬性名來(lái)引用類(lèi)成員而是用一個(gè)方括號(hào)中的數(shù)字來(lái)匿名引用(就象用數(shù)組下標(biāo)一樣)以外是相似的。 </p><p> 10、代理和反饋:一個(gè)代理對(duì)象包括了訪問(wèn)一個(gè)特
69、定對(duì)象的特定方法所需的信息,只要把它當(dāng)成一個(gè)聰明的方法指針就行了。代理對(duì)象可以被移動(dòng)到另一個(gè)地方,然后可以通過(guò)訪問(wèn)它來(lái)對(duì)已存在的方法進(jìn)行類(lèi)型安全的調(diào)用。一個(gè)反饋方法是代理的特例.event關(guān)鍵字用在將在事件發(fā)生的時(shí)候被當(dāng)成代理調(diào)用的方法聲明中。</p><p> 第3章 WPF優(yōu)越性詳細(xì)分析</p><p> 第二大部分WPF簡(jiǎn)介中已簡(jiǎn)要介紹WPF的結(jié)構(gòu)和功能。而本部分將對(duì)其作詳細(xì)展開(kāi)
70、,結(jié)合開(kāi)發(fā)實(shí)踐,具體介紹WPF中最具亮點(diǎn)的新技術(shù),并討論如何在實(shí)際開(kāi)發(fā)中應(yīng)用WPF所提供的新技術(shù),分別闡明這些新技術(shù)的優(yōu)勢(shì)。</p><p><b> 3.1 聲明式編程</b></p><p> WPF中最醒目的體系結(jié)構(gòu)是聲明性編程用法。在聲明性編程中,重點(diǎn)在于“做什么”而不是“如何做”。開(kāi)發(fā)者只需聲明要系統(tǒng)做什么,而不是列出它為此必須執(zhí)行的一組操作。SQL是一
71、個(gè)規(guī)范的示例,開(kāi)發(fā)者只需構(gòu)造聲明要檢索信息的SQL查詢;至于如何執(zhí)行該查詢則由數(shù)據(jù)庫(kù)解決。</p><p> 此處展示依賴于聲明性方法的幾個(gè)示例。需提供自定義圖形,開(kāi)發(fā)者可以創(chuàng)建表示圖形的對(duì)象,然后WPF會(huì)處理將這些圖形呈現(xiàn)到屏幕的過(guò)程,包括在屬性更改時(shí)更新該屏幕。同樣,開(kāi)發(fā)者解釋如何創(chuàng)建特定的對(duì)象,然后 WPF 將執(zhí)行實(shí)際的界面。開(kāi)發(fā)者也看到布局元素如何用于聲明 UI 的排列方式,即無(wú)需以手動(dòng)方式定位元素或者
72、編寫(xiě)代碼來(lái)確定它們的位置和大小。</p><p> 聲明性風(fēng)格有很多優(yōu)勢(shì)。最重要的一點(diǎn)是,它通??梢援a(chǎn)生更簡(jiǎn)單、更易于讀取的程序。只聲明需要做什么的代碼通常比執(zhí)行實(shí)際工作的代碼短得多,這是布局要求的一個(gè)簡(jiǎn)潔表達(dá)方式。由于它顯式闡明它的意圖,因此計(jì)算出該聲明性代碼的操作通常更加容易。因此,無(wú)需維護(hù)開(kāi)發(fā)人員進(jìn)行大量工作來(lái)推斷該代碼的意圖。聲明性代碼也可以使設(shè)計(jì)工具的工作更為出色。由于開(kāi)發(fā)者明確提出自己的意圖,因此設(shè)
73、計(jì)工具可理解開(kāi)發(fā)者要達(dá)到什么樣的效果。此外,使用聲明性編程,該框架在執(zhí)行該工作時(shí)具有很大的自由度,這可以潛在啟動(dòng)重要的優(yōu)化。</p><p> 由于 WPF 允許以聲明方式定義一個(gè) UI 的行為的許多方面,因此用 XAML 表達(dá)這些行為非常簡(jiǎn)單。雖然布局是應(yīng)用程序運(yùn)行時(shí)行為的一些方面,但是開(kāi)發(fā)人員可以使用 XAML 以聲明方式定義這些行為,最終將該功能提供給設(shè)計(jì)人員。</p><p>&
74、lt;b> 3.2 觸發(fā)器</b></p><p> 觸發(fā)器是一個(gè)聲明性機(jī)制,用于指定控件應(yīng)該如何響應(yīng)某個(gè)操作。觸發(fā)器可以在風(fēng)格或模板內(nèi)聲明。而且,觸發(fā)器可用于激發(fā)動(dòng)畫(huà)。例如,開(kāi)發(fā)者可想令一按鈕在鼠標(biāo)位于它上面時(shí)變成另一種顏色。動(dòng)畫(huà)在本質(zhì)上與屬性不同,屬性是暫時(shí)的。雖然開(kāi)發(fā)者可以將屬性設(shè)置為一個(gè)值,但無(wú)法將動(dòng)畫(huà)設(shè)置為一個(gè)值,相反可以將動(dòng)畫(huà)設(shè)置為開(kāi)始和停止。因此,動(dòng)畫(huà)觸發(fā)器由事件驅(qū)動(dòng),而不是由
75、屬性驅(qū)動(dòng)。</p><p> 觸發(fā)器是 WPF 的聲明性方法的一個(gè)重要部分。這是能為設(shè)計(jì)人員提供更多幫助的另一個(gè)功能,它使開(kāi)發(fā)人員能夠設(shè)計(jì)一個(gè)無(wú)需開(kāi)發(fā)人員的代碼就能夠響應(yīng)操作的 UI,從而方便的實(shí)現(xiàn)動(dòng)態(tài)效果。</p><p> 3.3 一致的style</p><p> 在Web開(kāi)發(fā)中,Style是一組屬性,這些屬性可以應(yīng)用于文檔的某個(gè)部分以便獲取特定的外觀。
76、WPF中的Style與此非常類(lèi)似,但是它們可以應(yīng)用于用戶界面中的任何元素,而不僅僅是文檔的某些部分。</p><p> 雖然WPF Style可用于設(shè)置任何屬性,但是使用Style的目的通常是確??鐟?yīng)用程序的可視一致性。如果設(shè)計(jì)者想讓?xiě)?yīng)用程序傳送一個(gè)舊式外觀,則可以創(chuàng)建一個(gè)風(fēng)格以便一致應(yīng)用適當(dāng)?shù)膶傩浴?lt;/p><p> WPF style提供一個(gè)有用的機(jī)制,即在獨(dú)立于應(yīng)用程序行為和結(jié)構(gòu)
77、的情況下管理應(yīng)用程序的外觀。該分離使開(kāi)發(fā)人員可以專門(mén)致力于定義應(yīng)用程序的行為,而使設(shè)計(jì)人員專門(mén)致力于設(shè)計(jì)程序外觀。</p><p> 3.4 豐富的應(yīng)用程序文本</p><p> Windows 應(yīng)用程序中的文本長(zhǎng)期受困于Web應(yīng)用程序提供的文本功能。HTML和層疊樣式表可提供具有大量文本布局和格式化功能的應(yīng)用程序。而另一方面,Windows 應(yīng)用程序具有的支持卻極少。</p&g
78、t;<p> 當(dāng)然,可使用Win32顯示豐富的格式化文本,但該編程任務(wù)量極大。開(kāi)發(fā)者也可以嵌入MSHTML控件并顯示文本。但該技術(shù)不能完全將文檔性質(zhì)的文本呈現(xiàn)直接集成到應(yīng)用程序中,這意味著某些應(yīng)用程序區(qū)域無(wú)法從MSHTML中獲益。由MSHTML托管的文檔顯示與應(yīng)用程序的其余部分之間形成鮮明的對(duì)比。</p><p> WPF使得將豐富的格式化文本集成到用戶界面中更加容易。甚至最簡(jiǎn)單的文本處理元素T
79、extBlock控件也使能使用字體風(fēng)格、大小、顏色和字體的任意組合。再者,它比Windows窗體中的普通Label控件更為強(qiáng)大。即使開(kāi)發(fā)者只需要可使用Label獲取的純文本,TextBlock仍然非常易于使用。要放棄特殊的格式化,只需為其提供一個(gè)簡(jiǎn)單的字符串顯示。</p><p> 此外,對(duì)于需要顯示大量文本的應(yīng)用程序而言,WPF提供高級(jí)文本布局功能。例如,DocumentViewer控件顯示文本文檔,從而使用
80、高級(jí)文本布局探測(cè)法針對(duì)可用空間和分辨率優(yōu)化文本的可讀性。該文本布局技術(shù)結(jié)合Microsoft在屏幕可讀性方面的廣泛研究成果。</p><p> 使文本具有良好外觀對(duì)于生成界面美觀的應(yīng)用程序至關(guān)重要。但更重要的是確保應(yīng)用程序的所有可視部分以正確的大小顯示在正確的位置,而無(wú)論用戶如何選擇排列其窗口。</p><p> 3.5 可修改的UI布局</p><p> 多
81、數(shù)應(yīng)用程序設(shè)計(jì)人員都難以掌握其程序的運(yùn)行大小。不同PC間的屏幕大小差別很大。此外,一些用戶以最大化方式(充滿整個(gè)屏幕)運(yùn)行應(yīng)用程序,而其他用戶使用較小的窗口以便可以同時(shí)看到若干個(gè)應(yīng)用程序。</p><p> 這并沒(méi)有妨礙一些設(shè)計(jì)人員設(shè)計(jì)只以一種大小工作的UI,但是,若想滿足用戶的需要,就應(yīng)該生成一個(gè)具有可以將自身修改為可用空間的布局的 UI。如需要使應(yīng)用程序可訪問(wèn)且可本地化,這種適用性也非常有用。一個(gè)足夠適用的
82、UI無(wú)需重新設(shè)計(jì),即可以一種屏幕的低分辨率呈現(xiàn),或者可以轉(zhuǎn)換為所有單詞都是兩倍長(zhǎng)度的語(yǔ)言。</p><p> WPF提供功能強(qiáng)大的布局元素工具箱,這些元素使得生成具有適應(yīng)性布局的UI 更加容易。WPF提供五種布局面板:Canvas、DockPanel、StackPanel、Grid和WrapPanel。</p><p> Canvas支持(x,y)絕對(duì)定位,與 GDI 和 GDI+ 目
83、前提供的功能類(lèi)似。StackPanel 提供一個(gè)從左至右或從上至下放置內(nèi)容的堆棧模型。WrapPanel 布局與流布局相似,其中UI元素的排列方式就像單詞在文本中的排列方式一樣:從左到右,然后在當(dāng)前行滿時(shí)進(jìn)入下一行首。Grid提供一個(gè)允許進(jìn)行行/網(wǎng)格定位的模型,是一個(gè)啟用類(lèi)似網(wǎng)格或表布局的強(qiáng)大布局元素,與HTML表元素十分相似。由于其通用的適用性,Grid的使用可能比其他布局面板更多。</p><p> 3.6
84、 整體的優(yōu)越性</p><p> 本部分前幾節(jié)具體介紹WPF中最具亮點(diǎn)的新技術(shù),并討論這些技術(shù)在開(kāi)發(fā)中的應(yīng)用。本節(jié)則從整體上分析WPF優(yōu)越性。</p><p> 1、繼承:WPF提供統(tǒng)一服務(wù)API。開(kāi)發(fā)人員目前正面臨無(wú)數(shù)種不同技術(shù)和 API 的選擇,具體取決于他們是面向2D圖形(GDI或GDI+)、用戶界面(USER32或Windows 窗體)、媒體(DirectShow)還是3D(D
85、irect3D或OpenGL)。WPF提供一個(gè)與上述所有服務(wù)正交的單個(gè)模型,并允許將內(nèi)容無(wú)縫地集成到單個(gè)應(yīng)用程序??墒褂孟嗤臉?gòu)造來(lái)實(shí)現(xiàn)動(dòng)畫(huà)、數(shù)據(jù)綁定和樣式設(shè)置,而無(wú)需顧及是面向2D、3D還是文本內(nèi)容。</p><p> 2、聲明性編程:WPF引入XAML,這是一種基于XML的語(yǔ)言,用于實(shí)例化和填充嵌套對(duì)象層次結(jié)構(gòu)。盡管XAML并非專門(mén)局限于WPF,但其本質(zhì)上適合于諸如 UI 定義和構(gòu)建這樣的任務(wù)。XAML的設(shè)
86、計(jì)使應(yīng)用程序可在運(yùn)行時(shí)分析和操縱動(dòng)態(tài)工作流方案的UI邏輯。重要的是,WPF中體現(xiàn)的XAML代碼隱藏模型使設(shè)計(jì)人員和開(kāi)發(fā)人員可使用諸如Expression“Sparkle”這樣的工具以及第三方專家工具(包括ZAM 3D 和 Mobiform Aurora),相互協(xié)作來(lái)完成客戶端應(yīng)用程序的設(shè)計(jì)和開(kāi)發(fā)。</p><p> 3、簡(jiǎn)易的部署:通過(guò)對(duì)獨(dú)立應(yīng)用程序和 Web 瀏覽器應(yīng)用程序的支持,WPF提供兩種部署模型中的最
87、佳模型。Web 瀏覽器應(yīng)用程序從Internet Explorer內(nèi)部運(yùn)行,占據(jù)整個(gè)窗口或在嵌入式框架中,可提供Web應(yīng)用程序所聞名的易于部署的特點(diǎn),并且在部分信任的沙箱內(nèi)操作(沙箱能防止客戶端計(jì)算機(jī)受到惡意應(yīng)用程序的侵害)。Web 瀏覽器應(yīng)用程序仍可利用本地客戶端硬件,并使用3D和媒體服務(wù)獲得目前可以得到的最豐富的Web體驗(yàn)。另一方面,獨(dú)立應(yīng)用程序通過(guò)ClickOnce或MSI技術(shù)在本地安裝,并且提供對(duì)基礎(chǔ)平臺(tái)的完全訪問(wèn)。</p
88、><p> 第4章 文檔編輯軟件的實(shí)現(xiàn)</p><p><b> 4.1 系統(tǒng)環(huán)境</b></p><p> Windows 7旗艦版</p><p><b> 4.2 開(kāi)發(fā)環(huán)境</b></p><p> 4.2.1 Microsoft .NET Framework 3
89、.0</p><p> Microsoft .NET Framework 3.0 是用于 Windows®的新托管代碼編程模型。它將 .NET Framework 版本 2.0 的強(qiáng)大功能與新技術(shù)結(jié)合,用于構(gòu)建具有視覺(jué)上引人注目的用戶體驗(yàn)的應(yīng)用程序,實(shí)現(xiàn)跨技術(shù)邊界的無(wú)縫通信,并且能支持各種業(yè)務(wù)流程。</p><p> 4.2.2 WinFX Software Developm
90、ent Kit (SDK)</p><p> SDK包括用于構(gòu)建 WPF托管應(yīng)用程序的文檔、工具和示例,還包括針對(duì) WPF進(jìn)行開(kāi)發(fā)的 Visual Studio 2010 工具支持,其中包括用于構(gòu)建在瀏覽器內(nèi)部和外部均可運(yùn)行的應(yīng)用程序的已更新模板以及WPF控件。IntelliSense 是為代碼和標(biāo)記提供的,除集成的幫助外,還啟用編譯和調(diào)試支持。同樣,發(fā)行說(shuō)明中還提供有關(guān)所需組件的信息和正確的安裝順序,以確保所
91、有選項(xiàng)設(shè)置正確。</p><p> 4.2.3 Visual Studio 2010</p><p> Visual Studio 2010是微軟發(fā)布的高效集成開(kāi)發(fā)環(huán)境。</p><p> 4.2.4 Visual Studio 2010 Extensions for WCF, WPF</p><p> 該擴(kuò)展可在Visual Stu
92、dio 2010添加WPF程序模板,支持WPF開(kāi)發(fā)。</p><p> 4.2.5 Microsoft Expression Blend</p><p> 全新的,全功能的職業(yè)設(shè)計(jì)工具,用于創(chuàng)造基于Microsoft Windows平臺(tái)的豐富、復(fù)雜的應(yīng)用界面。使用Expression Blend可以提供更出色的應(yīng)用軟件并提升客戶的體驗(yàn)和滿意度。Expression Blend 包括與M
93、icrosoft Visual Studio 2010 的集成性,讓設(shè)計(jì)者和開(kāi)發(fā)者能夠更緊密地作為一個(gè)團(tuán)隊(duì)協(xié)作。</p><p> 4.3 總體開(kāi)發(fā)方案</p><p> 采用統(tǒng)一編程模型,確定用戶界面和邏輯分離的開(kāi)發(fā)框架。然后使用微軟最新開(kāi)發(fā)工具Expression Blend開(kāi)發(fā)用戶界面和控件,運(yùn)用WPF提供的控件新特性、新控件,實(shí)現(xiàn)文檔編輯程序框架及絢麗的用戶界面效果,并將其生成
94、為XMAL資源文檔。最后在VS2010中導(dǎo)入相關(guān)資源文檔,實(shí)現(xiàn)邏輯代碼并導(dǎo)入XML數(shù)據(jù)存儲(chǔ)文檔,初步實(shí)現(xiàn)具有較豐富用戶體驗(yàn),界面美觀,具有較強(qiáng)人機(jī)交互的文檔編輯軟件。具體實(shí)現(xiàn)如圖所示:</p><p> 圖4-3-1 FlowDocument編輯界面</p><p> 圖4-3-2 HTML code界面</p><p> 本系統(tǒng)采用用戶界面和邏輯分離的開(kāi)發(fā)框
95、架,模擬UI設(shè)計(jì)者和程序開(kāi)發(fā)者兩方分離開(kāi)發(fā)。故以下步驟分為UI設(shè)計(jì)端和程序開(kāi)發(fā)端。</p><p> 4.4 UI設(shè)計(jì)端開(kāi)發(fā)步驟</p><p> 4.4.1 開(kāi)發(fā)應(yīng)用程序框架</p><p> 目前對(duì)于大多數(shù)開(kāi)發(fā)人員而言,大部分的頁(yè)面結(jié)構(gòu)是在dreamweaver中完成界面設(shè)計(jì)的。而我們?cè)摮绦蚴窃贛icrosoft Expression Blend中完成網(wǎng)頁(yè)
96、的界面定型,然后在vs2010中完成程序的代碼。</p><p><b> ?。?)開(kāi)發(fā)整體框架</b></p><p> 首先在Microsoft Expression Blend中將應(yīng)用程序框架劃分,然后在劃分好的框架的各個(gè)部分中,將要實(shí)現(xiàn)的控件用空標(biāo)簽預(yù)先定位。并生成主框架XAML文件。此處使用聲明性語(yǔ)句,對(duì)框架各個(gè)部分進(jìn)行控制。</p><
97、;p><b> ?。?)實(shí)現(xiàn)框架效果</b></p><p> 在Microsoft Expression Blend中設(shè)計(jì)出FlowDocument、HTML Browser、HTML code三個(gè)選擇界面,并將三個(gè)界面和下邊將要設(shè)計(jì)的內(nèi)容和模版控件整合為一體,使得軟件的整體框架閑的大氣。</p><p> 4.4.2 開(kāi)發(fā)控件</p>&l
98、t;p> ?。?)基于內(nèi)容模型和模板控件開(kāi)發(fā)外觀</p><p> 基于WPF 內(nèi)容模型和模板控件技術(shù),可在Microsoft Expression Blend中設(shè)計(jì)控件的外形、風(fēng)格。本設(shè)計(jì)中的大部分控件都是基于內(nèi)容模型和模板編寫(xiě)實(shí)現(xiàn)的。在WPF中,所有控件都被視為一種容器,可在控件中放置任何內(nèi)容。這導(dǎo)致控件嵌套的多樣化,促生很多可視化設(shè)計(jì)的可能性。本設(shè)計(jì)中的控件利用此內(nèi)容模型,基本上都進(jìn)行重寫(xiě),以便得到
99、更為絢麗的圖形表現(xiàn)。而且WPF也支持基于內(nèi)容模型創(chuàng)建的模版控件。</p><p> 本步驟將以Roster控件為例,說(shuō)明如何開(kāi)發(fā)控件外觀和為控件添加內(nèi)容。</p><p> 首先在Microsoft Expression Blend中以可視化開(kāi)發(fā)環(huán)境,通過(guò)多邊形繪制和插入,再將該外觀生成對(duì)應(yīng)的XAML代碼段保存,并將該XAML代碼段放入GRID標(biāo)簽,使之成為一種布局。并將此布局作為內(nèi)容
100、添加到Roster控件的模版item_RosterDetails。</p><p> 最后將此布局代碼段放入ControlTemplate標(biāo)簽中,使其成為能被引用的資源文件,提交給程序開(kāi)發(fā)者。</p><p> ?。?)控件交互性設(shè)計(jì)</p><p> 雖然模版和內(nèi)容模型已經(jīng)能為應(yīng)用程序提供出色的外觀設(shè)計(jì),但要達(dá)到增強(qiáng)交互性的目的,需利用觸發(fā)器和故事板。觸發(fā)器已
101、經(jīng)在第三部分進(jìn)行過(guò)簡(jiǎn)要介紹,下面將簡(jiǎn)單說(shuō)明在設(shè)計(jì)中如何使用觸發(fā)器和故事板實(shí)現(xiàn)較強(qiáng)交互性。</p><p> 觸發(fā)器可識(shí)別多種系統(tǒng)已定義的狀態(tài)如IsMouseOver等,同時(shí)也能識(shí)別指定對(duì)象屬性的變化,進(jìn)而觸發(fā)相應(yīng)事件。這使得UI設(shè)計(jì)者能簡(jiǎn)單指定事件和表現(xiàn)的聯(lián)系,而不用使用復(fù)雜后臺(tái)代碼實(shí)現(xiàn)。本設(shè)計(jì)中主要控件都已添加觸發(fā)器,以實(shí)現(xiàn)更強(qiáng)大的交互功能。</p><p> 觸發(fā)器主要通過(guò)在元素中
102、嵌套Trigger元素實(shí)現(xiàn),并使用Property屬性指定監(jiān)測(cè)項(xiàng) 。如下代碼段利用WPF觸發(fā)器提供的函數(shù),實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊后控件的外觀轉(zhuǎn)換為item_BigRosterDetails模板。</p><p> <Style.Triggers></p><p> <Trigger Property="Selector.IsSelected" Value=&
103、quot;True"></p><p> <Setter Property="Template" Value="{DynamicResource item_BigRosterDetails}" /></p><p> </Trigger></p><p> </Style.T
104、riggers></p><p> WPF提供的另一個(gè)促進(jìn)交互式的新技術(shù)是故事板。故事板屬于WPF動(dòng)畫(huà)服務(wù)部分,允許開(kāi)發(fā)者使用XAML描述界面的變化,并將其轉(zhuǎn)變?yōu)閯?dòng)畫(huà)在屏幕上播放。本設(shè)計(jì)為其中主要控件都添加動(dòng)畫(huà)板,以獲得更優(yōu)秀的交互性。</p><p> 如下段代碼定義一個(gè)簡(jiǎn)單動(dòng)畫(huà),使鼠標(biāo)移至ListBox相應(yīng)控件上時(shí),該控件呈現(xiàn)一個(gè)放大縮小的動(dòng)畫(huà)過(guò)程。</p>&
105、lt;p> <Trigger.EnterActions></p><p> <BeginStoryboard></p><p> <Storyboard></p><p> <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storybo
106、ard.TargetProperty="(ScaleTransform.ScaleY)" Storyboard.TargetName="LayoutScaleTransform" DecelerationRatio="1"></p><p> <SplineDoubleKeyFrame d:KeyEase="Linear;Line
107、ar;0.5;0.5;0.5;0.5" KeySpline="0.5,0.5,0.5,0.5" Value="1.03" KeyTime="00:00:00.15"/></p><p> </DoubleAnimationUsingKeyFrames></p><p> <DoubleAnim
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- (畢業(yè)設(shè)計(jì))基于wpf的文檔編輯軟件的設(shè)計(jì)與實(shí)現(xiàn)
- 基于WPF的節(jié)奏訓(xùn)練軟件的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于java的文本編輯軟件設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)---基于cs即時(shí)網(wǎng)絡(luò)通訊軟件的設(shè)計(jì)與實(shí)現(xiàn)
- 基于android平臺(tái)的聊天軟件設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文
- 基于mtk平臺(tái)通話管理軟件的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---文檔管理系統(tǒng)的實(shí)現(xiàn)
- 軟件畢業(yè)設(shè)計(jì)--網(wǎng)上購(gòu)物系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)--文檔資料管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 基于java的rsa文件加密軟件的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文
- 基于android平臺(tái)的聊天軟件設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文
- 校園軟件屋的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)】
- 任意波形編輯軟件的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于WPF的運(yùn)動(dòng)中心管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于web的畢業(yè)設(shè)計(jì)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---qpsk調(diào)制與解調(diào)的軟件實(shí)現(xiàn)
- 基于wpf構(gòu)建組態(tài)軟件系統(tǒng)的技術(shù)研究與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì) 基于web的畢業(yè)設(shè)計(jì)選題系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)---基于bs模式即時(shí)通訊軟件的設(shè)計(jì)與實(shí)現(xiàn)
- 基于wpf的人事管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(1)
評(píng)論
0/150
提交評(píng)論