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