WPF完全揭秘

WPF完全揭秘,作者,(美)Adam Nathan,由人民郵電出版社於2008年5月出版。

基本信息

原書名:Windows Presentation Foundation Unleashed
原出版社: SAMS
作者:(美)Adam Nathan
譯者:瞿傑 單佐一 夏寒
叢書名: 圖靈程式設計叢書.NET系列
出版社:人民郵電出版社
ISBN:9787115176042
出版日期:2008 年5月
開本:16開
頁碼:486
版次:1-1

編輯推薦

Amazon 超級暢銷書,榮獲全五星盛譽.
通俗易懂,深入實用,揭示大量技術內幕..
放飛WPF,賦予你超越夢想的能力

內容簡介

windows presentation foundation (wpf) 是 net framework 3.0 的關鍵組件,是支持下一代視窗應用程式表現層編程的平台,也是微軟新發布的vista作業系統的三大核心開發庫之一,主要負責圖形顯示。本書是針對那些對用戶界面開發感興趣的軟體開發人員編寫的,易於理解,適合那些.net的新手,並有助於理解像microsoft expression blend這樣產品的精髓。
本書適合各層次web開發人員閱讀。

目錄

第一部分 背景
第1章 為什麼創造wpf 
1 1 回顧過去 
1 2 步入wpf 
1 3 作為 net framework的組成部分 
1 3 1 為託管代碼而設計 
1 3 2 強調聲明式描述 
1 4 小結 
第2章 xaml揭秘 
2 1 xaml定義 
2 2 元素和特性 
2 3 命名空間 
2 4 屬性元素 
2 5 類型轉換器 
2 6 標記擴展 
2 7 對象元素的子元素 
2 7 1 內容屬性 
2 7 2 集合項 
2 7 3 更多類型轉換 
2 8 編譯:將xaml與過程式代碼混合使用 
2 8 1 在運行時載入和解析xaml 
2 8 2 編譯xaml 
2 8 3 xaml關鍵字 
2 9 小結 
2 9 1 抱怨1:xml太過冗長不便於輸入 
2 9 2 抱怨2:基於xml的系統性能差 
第3章 wpf的重要新概念 
3 1 邏輯樹與可視樹 
3 2 依賴屬性 
3 2 1 依賴屬性的實現 
3 2 2 變更通知 
3 2 3 屬性值繼承 
3 2 4 對多個提供程式的支持 
3 2 5 附加屬性 
3 3 路由事件 
3 3 1 路由事件的實現 
3 3 2 路由策略和事件處理程式 
3 3 3 路由事件實踐 
3 3 4 附加事件 
3 4 命令 
3 4 1 內建命令 
3 4 2 使用輸入手勢執行命令 
3 4 3 帶有內建命令綁定的控制項 
3 5 漫遊類層次 
3 6 小結 
第二部分 構建wpf應用程式
第4章 wpf控制項 
第5章 尺寸縮放、定位與變換元素 
第6章 使用面板做布局 
第7章 構建並部署應用程式 
第三部分 為專業開發人員設計的功能
第8章 資源 
第9章 數據綁定 
第10章 樣式、模板、皮膚和主題 233
第四部分 通過富媒體使程式領先於時代
第11章 2d圖形 
第12章 3d圖形 
第13章 動畫 
第14章 音頻、視頻、語音和文檔 
第五部分 高級主題
第15章 與win32、windows form以及activex之間的互用性 
第16章 用戶控制項和自定義控制項 
第17章 使用自定義面板做布局 
第六部分 附錄
附錄 有用的工具

譯者序

能夠有機會翻譯本書這樣的名著,我們都感到非常榮幸。經過4個月的辛苦努力,本書的中文譯稿終於交到了出版社中,我們也總算可以鬆一口氣了!
不得不承認,翻譯是非常辛苦的一件工作。首先自己必須要對原文有通透的理解,然後再用流暢的漢語表達出來,同時還要避免術語的不一致,等等。在這次的翻譯過程中遇到了很多問題,也放棄了一個又一個“美好”的雙休日。雖然我本人已經有一些翻譯經驗,但是要管理多人來翻譯一本書的確有一些難度。剛開始的時候,我負責制定翻譯計畫,規範翻譯流程——誰負責哪一章節且應該在何時完成。 一切看起來似乎安排得很好,但計畫不如變化快,實際的進度並沒有我想像當中的順利。在翻譯的第一階段,我們的整體進度明顯落後,主要是由於每位譯者工作都比較忙,沒有辦法把太多時間投入到翻譯工作中。於是不得不調整翻譯計畫,並向出版社多申請了一個月的翻譯時間,以防萬一。現在看來這個“容災方案”還是很有效的!
在本次翻譯過程中,我們也遇到了不少的困難。夏寒家裡發生了點意外,不得不在中途退出,沒有參加本書的最後審校。但無論多么困難,他還是按時完成了第一稿,而且總體質量不錯,在此向夏寒表示由衷的感謝!另外,我也“不幸”換了部門,折騰了大約1個月,其中的辛酸只有自己知道,不過這基本沒有影響翻譯進度,一切還算順利!
在此要感謝陳興璐編輯,沒有她的及時催促,也就不會讓我們意識到進度的滯後;沒有她一次又一次的審校意見,也就沒有譯稿的高質量。雖然有時也會和她在一些審校意見上產生一些小摩擦,但這都是必要的,大家都很清楚這是為了提高譯稿的質量。在此還要感謝劉江總編輯,是他把這么一本好書引進了中國,讓中國的讀者可以在第一時間拜讀這本WPF的“聖經”。對於本書的好我想大家也早有耳聞,在這裡我就不再嘮叨了,你自己買一本看看就明白了!對了,別忘了先看看原作者的序,它會告訴你這本書適不適合你以及你應該怎么讀這本書,這也是我買每一本書之前必做的事情。
作為讀者的你拿到本書的時候可能還是初春乍暖還寒的時節,但在閱讀的時候你一定會體會到WPF所帶給你的暖意。WPF的強大絕對是你無法想像的,充分發揮你的創造力,用WPF嘗試著創造一些科幻般的應用程式吧!相信我,這絕對不是夢想!當你讀完本書之後,你對這句話會有更深切的體會!
本書的第4、5、7、15章及附錄由單佐一翻譯,第11、12、13章由夏寒翻譯,其餘部分由我翻譯。大家如果有任何意見和建議,或者想交流讀書心得都可以通過我的部落格(tonyqus cnblogs com)或電子信箱(tonyqus@gmail com)與我取得聯繫。
另外還要感謝部落格園(cnblogs com)的站長杜勇(dudu),他的辛勞園子裡的兄弟都是有目共睹,很多朋友(當然也包括我)都是伴隨著部落格園一起成長的,沒有部落格園就沒有今天的我們。在此也希望各位讀者多多支持部落格園,經常去部落格園逛逛,相信大家會收穫不少。
最後祝大家讀書愉快,編碼愉快!

前言

感謝你購買《WPF完全揭秘》!為避免讓你感到失望,在這裡我要先澄清一下,這不是一本關於Microsoft PowerPoint的書(許多人認為WPF是由PowerPoint演化而來的) ,WPF是微軟最新的圖形用戶界面技術,這裡的用戶界面可以是普通的窗體、以文檔為中心 的視窗、卡通動畫、視頻、逼真的3D環境,或者以上所有的組合!這項技術會讓創建許多類型的應用程式變得比過去任何時候都要簡單。例如,WPF可以使實現類似於Windows Media Player或Microsoft Word(或者至少WordPad)的應用程式變得相對簡單,當然也可以創建類似於Microsoft PowerPoint的應用程式!
自從2003年WPF公之於眾開始(當時的開發代號為Avalon),其革命性的創建軟體的方式引起了(理所應當的)高度關注,特別是使用Windows Forms和GDI進行開發的開發人員。創建有趣、有用、可分享的WPF示例來演示各種類型的技術並不難,而如果使用其他技術,那么它們很難實現。但從編程模型、基礎概念和使用的基本術語來看,WPF與以前的技術完全不同。甚至查看WPF的原始碼(我們可以用一個類似於 NET Reflector的工具來破解並打開WPF的組件)也會讓人感到困惑,因為你尋找的那些代碼經常不在你所期望的位置。再加上完成任何一個任務都有很多方式,和許多人一樣,你會得出一個結論:WPF的學習曲線非常陡。
本書於是應運而生了。5年前,我編寫了 NET and COM: The Complete Interoperability Guide,因為我覺得人們需要這樣一本書,完整地講解深奧和複雜的主題。WPF推出後,很明顯在市場上肯定將不會缺WPF的書。但是我並不清楚,這些書能否通過實踐的方式講解WPF,同時引導人們理解這項技術及其獨特的概念。因此,我在寫本書時,確立了這樣的目標:
以一種實用、易懂的方式來講解基本概念,打好紮實的基礎。
解決大多數人在學習這項技術時都會遇到的問題,以及演示如何完成一些最常見的任務。
成為一本權威的參考資料,這多虧WPF團隊成員的參與,是他們設計、實現並且測試了這一技術。
講清楚這項技術的缺點,而不只是將這項技術吹噓成能解決所有問題的靈丹妙藥。
要讓書中的內容很容易查找,以便經常查閱。
希望你能認可本書已具備了以上這些特點。
本書適合的讀者
這本書是為那些對用戶界面感興趣的軟體開發人員編寫的。無論你是在創建企業級商務應用程式,還是面向消費者的應用程式,抑或是一些可重用的控制項,本書的許多內容都可幫助你發揮平台的最大功效。它易於理解,即使對那些 NET新手們也不難。如果你已經對WPF十分熟悉,我可以很自信地告訴你,你仍然可以從本書中學到一些東西。有一點是肯定的,它是你書架上一本不可或缺的參考書。
因為WPF不僅允許你創建獨立的Windows應用程式,也允許你創建寄宿於Web瀏覽器的內容,所以任何一個想尋找Adobe Flash替代品的人都將感受到本書很有意思。雖然更輕量級的、跨平台Silverlight沒有在本書中大量涉及,但書中許多概念與Silverlight中的是相同的,也適用於WPF/E。
雖然本書的內容並不是為圖形設計師定製的,但閱讀它可以很大程度上幫助理解像Microsoft Expression Blend這樣的微軟產品的精髓。
現在概括一下這本書的內容。
涵蓋了你所需要知道的關於XAML(eXtensible Application Markup Language)的一切,它是新的基於XML的語言,可用於創建易於改變樣式的聲明式用戶界面。
以令人難以置信的深度講解WPF特性:控制項、布局、資源、數據綁定、樣式、圖形、動畫等。
研究許多書中沒有涉及的主題,如3D、語音、音頻/視頻、文檔、點陣圖特效等。
演示如何創建流行的UI元素,例如Microsoft Office System 2007中介紹的特性:Gallery、ScreenTip、自定義控制項布局等。
演示如何創建複雜的UI機制,例如類似於Visual Studio的可摺疊(collapsible)/可停靠(dockable)的視窗。
解釋如何開發、部署所有類型的應用程式,包括基於導航的應用程式、寄宿於Web瀏覽器的應用程式以及帶有好看的非矩形視窗的應用程式。

序言

推薦序一
2006年年底,WPF(Windows Presentation Foundation)剛剛隨著Windows Vista正式發布的時候,我在中國軟體網上閒逛,看到兩位軟體業界資深人士孟岩、韓磊兩位老兄針對WPF發布所寫的《這一天終於來了》以及《“這一天終於來了”》兩篇文章,還有孫輝先生髮表的《WPF,一次洗牌……》文章,感慨良多。隨著無數業界技術專家在全球範圍內的搖旗吶喊,WPF終於開始進入主流視野。
如今事隔一年多,市面上已經有越來越多WPF相關的圖書,也有越來越多的開發人員通過搜尋引擎、論壇、部落格等逐漸熟悉了WPF,WPF已經逐漸成為主流開發選擇。但是,仍然有很多朋友對於WPF的定位感到疑惑,畢竟微軟在用戶互動界面端有太多的新技術。要想真正領會掌握WPF,我們必須先搞明白WPF的定位,也就是為什麼微軟會推出WPF?
比爾·蓋茨在創建微軟時曾經有一個夢想——要讓每家每戶的桌子上都有一台電腦,而且這台電腦上要運行微軟的軟體。從1975年開始,整個微軟就在為這個夢想而奮鬥。歷史發展到21世紀,套用軟體從當初注重性能(硬體的限制)、功能(大而全的軟體)而逐步發展到更加注重用戶體驗。之所以出現這種趨勢,是因為軟體已經逐漸走下神壇,成為人們日常生活中所不可或缺的東西。而人們對日用品的選擇標準就是:價廉物美。價廉導致S+S(Software plus Service)產生,而物美促使軟體廠商對於用戶體驗越來越重視。
正是在這種大勢之下,微軟才會推出WPF對整個軟體生態鏈催熟。WPF的出現解決了以下3個問題。
(1)更快速的開發更豐富的用戶體驗。使用WPF,可以在更短的時間內開發出來更加豐富的界面,以滿足用戶的需求。WPF的出現,使得我們可以逐漸遠離使用控制項搭積木開發用戶互動界面的開發過程。雖然WPF目前仍然保留控制項機制,但我個人認為主要是為了向下兼容。WPF的目標應該是消除控制項,讓你開發出來的軟體根本看不出控制項的特徵,軟體世界再也不是由Button+Textbox組成的怪物了。
(2)消除用戶界面差異。歷史在1995年進入一個鴻溝,開發人員突然變成了兩大陣營:Browser/Server(B/S)開發人員以及Client/Server(C/S)開發。一個項目啟動時,我們首先想到的是這個項目是使用B/S架構還是C/S架構,這兩種架構各自有各自的好處,但對於開發人員的知識要求卻完全不一樣。使用B/S架構,要了解HTML語言以及HTTP協定等;使用C/S,你可能要了解套接字,要了解GDI+等。同樣,在項目完成後,如果基於某種原因,需要將此軟體架構進行改變。比如將一個C/S項目重新發布為B/S項目,那么對於整個開發團隊來說,基本上相當於推倒重來。而現在到了應該彌補這個鴻溝的時候了。WPF正是背負著這個歷史責任,同樣一套編碼,可以根據你的需要發布C/S架構(Windows Client套用)或者B/S架構(XBAP,XAML Browser Application)。
(3)軟體開發團隊的協作問題。軟體開發團隊的日常協作是一個非常大的問題,除了需求變更以外,第二個影響開發進度的就應該是團隊協作性了。在軟體團隊中,我們比較熟悉開發人員、資料庫管理人員、測試人員、運維人員、系統架構師等,而用戶互動界面設計師或者說設計人員往往被我們忽視,但實際上,他們的工作成果才是與客戶距離最近的。不過就現在的實際情況來說,設計人員與開發人員如何配合工作,是很多團隊所頭疼的,而WPF正可以解決此問題。因為WPF創造性地引入了XAML語言,開發人員以及設計人員使用這種統一的XML描述的語言進行溝通,將大大降低溝通成本。另外,微軟原來為開發人員提供了功能強大的開發工具,也就是Visual Studio系列,而隨著WPF的出現,微軟也開始面向設計人員提供相應的設計工具:Expression Studio系列。這兩套工具所使用的解決方案以及項目結構描述完全一致,也就是完全可以打開對方所創立的項目檔案。
如果你瀏覽一下目前的Windows平台上的軟體界面,它們基本上都大同小異,同樣都是矩形的窗體,窗體上都是以矩形的控制項進行排列。相信已經有很多朋友開始審美疲勞了。不知道有多少朋友在觀賞那些好萊塢產的科幻大片時,陶醉於電影主角所使用的更自然更酷的軟體互動界面。現在,掌握了WPF,你也能很容易地開發出這種下一代的軟體互動界面了。
現在,這本由Adam Nathan所編著由瞿傑等三位譯者翻譯的《WPF揭密》就擺在你面前,掌握了它,你也就掌握了通往未來的鑰匙……
推薦序二
我第一次接觸到WPF(Windows Presentation Foundation)是在MSDN的一段視頻上。這段視頻演示了如何通過簡單的操作來改變控制項傾斜角度,輕鬆地實現一些絢麗的特效。當時,它給我的感覺就是,這將是未來界面設計的方向!
我真正開始使用WPF是在2006年。由於在微軟工作的關係,近水樓台先得月,我很早就體驗了WPF的beta版。使用之後的切身感受就是,參照一些例子就可以開發小程式,這非常簡單,但是想要開發具有出色界面的程式就十分困難——不是 WPF難用,而是不知道怎么用!雖然當時有一些MSDN文章可以參考,但是缺乏系統的講解。我依葫蘆畫瓢編寫出了XAML,但不知道為什麼會得到那種結果,這讓我陷入了一種知其然而不知其所以然的窘境。WPF擁有很多新概念,比如“dependency Properties”、“Routed Events”、“Logical Tree”以及“Visual Tree”等,如果開發人員只會使用這些概念,而沒能系統深入地理解它們,必然會受制於它們,更無法開發出高效、絢麗的WPF界面。
2007年,當我準備系統學習WPF的時候,看到這本書,稍稍翻看了幾頁,頓時眼前一亮,如獲至寶。書中把我心中困惑已久的一些問題闡釋得清晰明了,還通過很多例子讓WPF的學習過程變得非常輕鬆。我,從此踏上了輕鬆愜意的WPF之旅。
可能有人會說MSDN夠用了,不需要再看其他的書。我認為這句話只對了一半!MSDN的確是一本百科全書,包羅萬象,但是如果你要從頭學一門新技術的話,MSDN並不是最合適的。你需要的是一條平坦的學習之路,需要的是一位能由淺入深、循序漸進指引你的導師,那么本書就非常適合。

書摘

第1章為什麼創造WPF
本章內容
回顧過去
進入WPF殿堂
作為.NET Framework的組成部分
通常,電影和電視中的人物都是對現實生活中的人的誇張描述。他們比曰常人物更有吸引力,他們反映敏捷,對所要做的事情總是把握準確,並且他們使用的軟體也和其人一樣出色。
第一次給我留下深刻印象的是在1994年。當時我正在看一部叫作《叛逆性騷擾》(Disclosure,1994年出品)的電影,這部電影捧紅了麥可·道格拉斯(Michael Douglas)和戴米·摩爾(Demi Moore出演),還捧紅了一個電子郵件程式,不過它看上去3I]MicrosoftOutlook完全不同。在整部影片中,這個程式的各種不同的可視化特性讓我們如赴盛宴:一個旋轉的三維字母“e”;訊息打開時會展開,刪除時又會被撕碎;可以支持“上墨(inking)”;列印訊息時,會有平滑的動畫(這個電子郵件程式還不是這部電影中最不切實際的軟體,它還有一個“虛擬現實的資料庫”,我們暫且不表)。
先別管可用性!長久以來,好萊塢的電影讓我們明白,真實世界中的軟體並沒有達到應有的水平。你也能想到幾個在電視或電影中見過的有意思的軟體。但是現在,真實世界中的軟體開始趕上好萊塢的標準!從傳統的作業系統(例女[1Mac OS或最近的Windows Vista)中、為TiV0或box
設備設計的軟體中,還有網頁上的Flash動畫中,你可能已經看到這樣的趨勢了。用戶正對軟體的使用體驗充滿越來越高的期待,一些公司正將大量時間和金錢投入到用戶界面上,力求與競爭對手有所不同。
微軟現在有一個新的解決方案,可以幫助人們創造21世紀的軟體,它將滿足這些高要求,卻可以在更短的時間裡、花更少的錢來做到。這個解決方案就是Windows Presentation Foundation(WPF)。
1 1 回顧過去
目前大多數基於Windows的用戶界面都使用兩種主要技術——GDl和USER子系統,它們是在1985年隨Windows 1.0引進的。不過這幾乎已經是技術世界的史前文物了。在二十世紀九十年代早期,OpenGL(由SGl公司創建)成為了一種在Windows或非Windows系統上進行高級2D和3D.的圖形開發的流行圖形庫。從事計算機輔助設計、科學的可視化和遊戲開發工作的人們大量使用。

相關詞條

熱門詞條

聯絡我們