![c3.0與net3.5高級編程第7章wpf入門_第1頁](http://file4.renrendoc.com/view/78ec7d84da9672cb2fae5213b046e311/78ec7d84da9672cb2fae5213b046e3111.gif)
![c3.0與net3.5高級編程第7章wpf入門_第2頁](http://file4.renrendoc.com/view/78ec7d84da9672cb2fae5213b046e311/78ec7d84da9672cb2fae5213b046e3112.gif)
![c3.0與net3.5高級編程第7章wpf入門_第3頁](http://file4.renrendoc.com/view/78ec7d84da9672cb2fae5213b046e311/78ec7d84da9672cb2fae5213b046e3113.gif)
![c3.0與net3.5高級編程第7章wpf入門_第4頁](http://file4.renrendoc.com/view/78ec7d84da9672cb2fae5213b046e311/78ec7d84da9672cb2fae5213b046e3114.gif)
![c3.0與net3.5高級編程第7章wpf入門_第5頁](http://file4.renrendoc.com/view/78ec7d84da9672cb2fae5213b046e311/78ec7d84da9672cb2fae5213b046e3115.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
7WPF編程WPFWindowsPresentationFoundationWindows表現(xiàn)層基礎(chǔ),是微軟公司在.NETFramework3.5WPF可以在WindowsVista操作系統(tǒng)平臺上開發(fā)出具有炫目視覺效果的應(yīng)用程序,當(dāng)然也可以應(yīng)用在WindowsXPWindows2003WPF的特點(diǎn)和機(jī)構(gòu)以及如何在.NET3.5框架上應(yīng)用WPF。WPF非常容易上手。WPF提供了非常多的新的概念和技術(shù),將會改變傳統(tǒng)Windows程序員的WindowsVista操作系統(tǒng)下的全新的表現(xiàn)層技術(shù),WPF完美地整合了矢量圖形、提供了一種式編程語言XAML。微軟同時(shí)提供了Expression設(shè)計(jì)工具,讓設(shè)Windows如果讀者具有多年的Windows程序設(shè)計(jì)經(jīng)驗(yàn),無論使用何種開發(fā)工具,比如VisualBasic、Delphi、C++等,為了創(chuàng)建Windows用戶界面,都會直接或間接地使用到Windows操DUser32WindowsDGDI/GDI+API很多應(yīng)用程序開發(fā)框架中,提供UI或繪圖開發(fā)方法都是對這兩個(gè)子系A(chǔ)PI的Win32APIBolandVCL、微軟的MFC等。Windows1.0Windows圖形服務(wù)已經(jīng)越來越穩(wěn)固。然而隨著軟件技術(shù)的日益發(fā)展,傳統(tǒng)的圖形UI已經(jīng)越來越難以滿足用戶對界面日益增長AvalonWindowsPresentationFoundation,擺脫了傳統(tǒng)圖形UI開發(fā)的不足,不再基于User32GDI/GDI+DirectX技術(shù)。技術(shù)的復(fù)雜性,以及其與硬件圖形卡的緊密結(jié)合的特性,很少有軟件基于DirectX來進(jìn)行開發(fā)。WPF的出現(xiàn)彌補(bǔ)了這種不足,意味著開發(fā)人員可以在普通的商業(yè)應(yīng)用程序中應(yīng)用一User327.1.3小節(jié)中WPF架構(gòu)時(shí),將會具體討論WPF如何利用DirectX進(jìn)行表示層的呈現(xiàn)。WPF的功能特D基于矢量繪圖技術(shù):WPFWPF使用Direct3D進(jìn)行圖形的渲染,充分利用顯卡的GPU,即圖形處理單元。D設(shè)備無關(guān)單位:這是一個(gè)非常重大的改進(jìn),WPF1/96的邏輯單位,這使應(yīng)用面,在不同的顯示分辨率下時(shí),會呈現(xiàn)不同的顯示大小,WPF彌補(bǔ)了這種不足。D式的程序設(shè)計(jì):WPF使用全新的XAML標(biāo)記語言,進(jìn)行用戶界面的設(shè)計(jì),配合代碼后置文件來開發(fā)應(yīng)用程序。如果讀者有過ASP.NET程序開發(fā)經(jīng)驗(yàn),那么DWeb風(fēng)格的布局模型:WPF增強(qiáng)了流式布局模型體驗(yàn),除了使用特定坐標(biāo)進(jìn)行固D豐富的繪圖模型:WPF除了可以處理基本圖形、文本塊之外,還提供了很多的新的繪圖特性,比如真正的透明控件,使用不同的堆疊多個(gè)控件以及原生的3D支持特性。D原生的多、動畫支持:現(xiàn)在,WPF應(yīng)用程序內(nèi)置了動畫特性。設(shè)計(jì)人員可以使用XAML標(biāo)記語言或借助于ExpressionBlend設(shè)計(jì)工具來設(shè)計(jì)動畫。同時(shí),也可以使用ExpressionBlend設(shè)計(jì)多音。這個(gè)工具會生成XAML代碼,進(jìn)而豐富WPF應(yīng)用程序的可交互性。D樣式和模板特性:類似于ASP.NET中的,或者是CSS樣式特性,使應(yīng)用程序板控制Button控件的輸出。D基于頁面的應(yīng)用程序:WPF允許開發(fā)人員創(chuàng)建瀏覽器風(fēng)格的應(yīng)用程序,讓用戶使用類似超的方式在頁面中進(jìn)行導(dǎo)航。應(yīng)用程序也可以在瀏覽器中比如Firefox或者是InternetExplorer中運(yùn)行。WPF處理了很多繁雜的細(xì)節(jié),比如歷史頁面等。WPF架構(gòu)簡WPF7.1WPF分為三層結(jié)構(gòu),最WPFWPF7.1WPFDPresentationFramework.dll:在該程序集中放置次的WPF類型,比如窗口、面板以及其他類型的控件。它實(shí)現(xiàn)了一些次的抽象,比如樣式等。開發(fā)人員所DPresentationCore.dllUIElementVisual和DependencyObjectDMilcore.dll:這是WPF輸出系統(tǒng)的,也是多整合層的基礎(chǔ)。這個(gè)程序集主要用于與DirectX進(jìn)行交互。DWindowsCodecs.dll:這是一個(gè)底層API,用于提供圖像成像支持,比如圖像處理、圖像顯示、縮放bitmmap和JPEG。DDirect3D3DAPIDUser32:用于決定程序的狀態(tài),該服務(wù)并不提任輸出通用控件的任務(wù),而是作為處WPF的類層次結(jié)7.2WPF中的基類層次結(jié)構(gòu),在本書的后續(xù)章節(jié)會對由這些基類派生出來的子類進(jìn)行詳細(xì)地介紹。在深入學(xué)習(xí)WPF應(yīng)用程序之前,有必要大概了解一下WPF中的類層次結(jié)WPF的核心命名空間都以System.Windows開始,比如System.Windows,這是WindowsForms編程工具箱的一部分。下面對這些基類進(jìn)行分別介紹,如下所示。 System.Threading.DispatcherObject類:WPF用戶界面元素交互時(shí),將會產(chǎn)生不安全的影響。為了簡化這個(gè)模型,WPF使用一DispatcherObject派生子類,應(yīng)用程序的用戶界面可以檢7.2WPF基類的類層次結(jié)構(gòu)DSystem.Windows.DependencyObject:WPF主要通過屬性來與界面元素交互。WPF提供了一套強(qiáng)大的屬性系統(tǒng),并使用式的屬性語法。使用屬性的一個(gè)例子是賴關(guān)系更改時(shí),會自動重新驗(yàn)證屬性值。例如,如果具有一個(gè)繼承的屬性如DSystem.Windows.Media.Visual:可以把Visual類看成是一個(gè)圖形對象,WPF中的WPFAPImilcore.dllVisual的任何類都有能DSystem.Windows.UIElement:UIElement定義了WPF的子系統(tǒng),包括布局Layout、輸入Input和Event、焦點(diǎn)等。比如布局,這是WPF的一個(gè)。UIElementMeasureArrange兩階段的處理Panel控件時(shí)將會進(jìn)行詳細(xì)地介紹。UIElement引入了增強(qiáng)的事件傳遞系統(tǒng),稱為路由。路由可以將上下沿傳遞。本書在討論依賴DSystem.Windows.FrameworkElement:作為WPFFrameworkElementUIElement僅定義的成員。比如,UIElement設(shè)置WPF布局系統(tǒng)的基礎(chǔ),而FrameworkElement則包括幾個(gè)關(guān)鍵的屬性提供對布DSystem.Windows.Shapes.Shape:基本的形狀類,比如從該類派生的Rectangle、Polygon、Ellipse、Line和Path等。DSystem.Windows.Controls.Control:控件是一種用于與用戶進(jìn)行交互的元素,比如TextBox、ButtonListBox等。Control類添加了一些屬性比如設(shè)置字體、前景色和背景色等。別外,Control類還提供了對控件模板的支持,允許開發(fā)人員使用自已注意:WindowsForms不同的是WindowsForms中,每個(gè)呈現(xiàn)在Form上的對象WPF則與之不同,可視化對象稱為元素,只有能夠接收焦點(diǎn)并DSystem.Windows.Controls.ContentControl:這是WPF中一個(gè)非常重要的基類。ContentControl是其他內(nèi)容控件繼承自的類,用來呈現(xiàn)單塊內(nèi)容。派生自ContentControlContent屬性。ContentObject,因此,在ContentControl中可以放置的內(nèi)容沒有任何限制??梢允褂每蓴U(kuò)展應(yīng)用程序標(biāo)記語言(XAML)或代碼來設(shè)置Content。DSystem.Windows.Controls.Panel:這是所有布局容器面板的基類。布局面板能夠使WPF前面介紹了太多的理論知識,現(xiàn)在來介紹開發(fā)WPF的工具。一般經(jīng)常使用的開發(fā)工具有如下4個(gè):VisualStudio2008、ExpressionBlend、XAMLPad標(biāo)記文本查看器和ZAM3D。VisualStudio2008WPFVisualStudio2008。VisualStudio2008提WPF7.37.3中可以看到,VisualStudio2008提供了如下所示的4種WPF項(xiàng)目模板。DWPFWindowsFormsexe為擴(kuò)展名的DWPFXAMLxbapDWPFDWPFWPF類似于.NETFramework的其他項(xiàng)目模板,開發(fā)人員可以在VisualStudio中開發(fā)兩種WPFWPFWPF自定義控件庫來為WPF應(yīng)用程序創(chuàng)建可重用的組件。VisualStudio2008WPF的開發(fā)提供了一個(gè)所見即所得的XAML設(shè)計(jì)窗口,如圖7.4所示。圖7.3VisualStudio2008的WPF項(xiàng)目模 圖7.4VisualStudio2008的XAML設(shè)計(jì)窗7.4ASP.NETSplit設(shè)計(jì)視圖,開發(fā)人員可以從左側(cè)的XAMLXAML代碼區(qū)將會自動產(chǎn)生通常一個(gè)XAML文件會關(guān)聯(lián)到一個(gè)代碼后置(Code-Behind)文件,可以通過按下F7鍵序代碼的編寫。VisualStudio2008優(yōu)秀的智能提示和代碼片斷功能,大大提高了開發(fā)的效ExpressionBlendWPF的首選交互式設(shè)計(jì)工具,其操作界面非常類似于一款矢量繪圖軟件。Blend主要用于設(shè)計(jì)WPF應(yīng)用程序的交互式設(shè)計(jì)。設(shè)計(jì)人員可以使用ExpressionDesignXAMLBlendXAML文件,在Blend中設(shè)計(jì)交互以及動畫。界面如圖7.5所示。 圖 ExpressionBlend設(shè)計(jì)工用戶界面的設(shè)計(jì)。ExpressionBlend的“新建項(xiàng)目”框如圖7.6所示。應(yīng)用程序,一種是控件庫。當(dāng)設(shè)計(jì)人員在Expression中設(shè)計(jì)好WPF應(yīng)用程序的外觀后,可以直接導(dǎo)入到VisualStudio2008/XAMLPad標(biāo)記文本查看的視覺呈現(xiàn),其界面如圖7.7所示。圖7.6ExpressionBlend的“新建項(xiàng)目” 圖7.7XAMLPad工XAML文本呈現(xiàn)的內(nèi)容。在右側(cè),XAMLPadXAML文本的視覺樹和屬性樹。在本書后面的內(nèi)容中會詳細(xì)討論這兩個(gè)WPF中的重要概念。使用XAMLPad,開發(fā)人員可以0時(shí)實(shí)地顯示和編輯XAML0XamlPad.exeXamlPad_save.xaml文件,將會自動保存最近一次使用的XAML文本。0XAMLPadXAML語法,并重新顯示新的XAMLWindowsF5鍵,XAMLPad會自動彈出一PageXAML會自動的呈現(xiàn)在上方的XAMLPad幫助ZAM3D第工具(3D模型ZAM3D是一款功能強(qiáng)大的創(chuàng)建WPF3D圖形的第工具。該工具可以將3D模型XAML格式,然后可以使用ExpressionBlendDesign來3DZAM3D工具,設(shè)計(jì)人員可以進(jìn)行三維建模,設(shè)計(jì)三維動畫,然后將結(jié)果導(dǎo)出為XAML的格式。ZAM3D操作界面如圖7.87.8ZAM3D操作界讀者可以從ht /products/ZAM3D/DefaultPDC.asp或取更詳細(xì)的信息,并且可以在該上相關(guān)的Demo來進(jìn)行學(xué)習(xí)。VisualStudio2008WPFWindows應(yīng)用程序,然后會VisualStudio2008WPF項(xiàng)目模板來WPF應(yīng)用程序。首WPF項(xiàng)目模板來創(chuàng)建一個(gè)簡單的oWPF示例項(xiàng)目,步打開VisualStudio2008,如果讀者的機(jī)器上尚未安裝,可以到下面的這個(gè)進(jìn) 命令,將彈出如圖7.9所示的“新建項(xiàng)目”框,在該框中選擇Windows項(xiàng)目,選擇“WPF應(yīng)用程序”選項(xiàng)。將該項(xiàng)目命名為oWPF,單擊“確定”按鈕,VisualStudio2008將進(jìn)入WPF的默認(rèn)窗口設(shè)計(jì)窗口。從左側(cè)的工具箱中拖動一個(gè)按鈕到VS2008的窗口設(shè)計(jì)視圖中??梢钥吹?,在XAML視圖區(qū)會自動地添加相應(yīng)的XAML代碼。開發(fā)人員也可以不管設(shè)計(jì)視圖,直XAML代碼,VS2008的智能提示功能非常的完美。為了查看設(shè)計(jì)XAMLButtonVS2008生成的代碼的區(qū)別。這是一種非常好的學(xué)習(xí)XAML的方式。在VS2008Name屬性為btno,設(shè)置其ContentoWPF7.10圖7.9新建WPF應(yīng)用程序項(xiàng) 圖7.10在屬性編輯器中設(shè)置按鈕的屬btno按鈕,VS2008會自動切換到后置代碼(Code-Behind)窗口,并生成了單擊框架。在其中添加一個(gè)MessageBox方法,用于當(dāng)用戶單擊按鈕后,彈出一privateprivatevoid{o_Click(objectsender,RoutedEventArgsMessageBox.Show("歡迎學(xué)習(xí)WPF,這是第一WPF應(yīng)用程序}可以看到該單擊的參數(shù)是RoutedEventArgs類型。這是WPF中應(yīng)用廣泛的VS2008自動添加了單擊。如下所示。<Window Title="WPF應(yīng)用示例Height="300<ButtonMargin="108.171,113.625,94.536,125.442" o么說明:前面在屬性窗口中的設(shè)置都可以從XAML看到WPFWPF應(yīng)用程序中,是由代碼和標(biāo)記語言的組成,類似于ASP.NET中的HTML元素與代碼后置F5鍵運(yùn)行該示例程序,可以看到非常類似于一個(gè)傳統(tǒng)的Win32窗體。當(dāng)單擊oWPF按鈕7.11
7.11WPF標(biāo)準(zhǔn)應(yīng)用程序運(yùn)行效VS2008WPF7.3節(jié)的項(xiàng)目為基礎(chǔ)。當(dāng)使用OApp.xamlApp.xaml.cs文件:這兩個(gè)文件是WPF應(yīng)用程序的應(yīng)用程序的入WPFApplication類的實(shí)例化表示。在每一個(gè)WPF應(yīng)用程序該類管理著WPF應(yīng)用程序的生命周WPF應(yīng)用程序中創(chuàng)建多個(gè)App.xaml文件。App.xaml.cs是代碼后置文件,可以 圖7.12WPF解決方法項(xiàng)OWindow1.xamlWindow1.xaml.csVS2008中默認(rèn)生成的窗體文件,WPF應(yīng)用程序可能具有多個(gè)窗體、頁面等。可以在“解決方案資源管理器”中右擊項(xiàng)目名稱,在彈出的快捷菜單中選擇“添加新項(xiàng)”命令來添加的窗體只有理解WPF應(yīng)用程序的結(jié)構(gòu),才能真切地體會到這些文件背后的意義。其實(shí),以便管理應(yīng)用程序的生命期。Windows1.xaml及其代碼后置文件也是可選的,開發(fā)人員可以只創(chuàng)建Windows類的實(shí)例,交付給Application類即可。么說明:一個(gè)WPF應(yīng)用程序通常是由一個(gè)XAML文件和一個(gè)代碼后置文件組成,這不是絕將會詳細(xì)地介紹XAML語言以及Application類。WPF與.NETFramework3.5通信基礎(chǔ)。WindowsCommunicationFoundation,簡稱為WF的Windows工作流基礎(chǔ)WindowsWorkflowFoundation,以及用于統(tǒng)一驗(yàn)證的WindowsCardSpace。這些技術(shù)都可以與WPF緊密集成,大大簡化和統(tǒng)一.NET平臺上的應(yīng)用軟件的開發(fā)。WindowsCommunicationFoundation概WindowsCommunicationFoundationWCF,是微軟構(gòu)建面向服務(wù)的應(yīng)用程序而提WCF,將不用關(guān)注一些零散的技術(shù),比如WebService、Remoting以及MSMQ等。這讓開發(fā)熱門的一種開發(fā)觀念,WCF則是微軟SOA的一種編程實(shí)現(xiàn)。WCF的主要設(shè)計(jì)目標(biāo)有3D統(tǒng)一現(xiàn)存的技術(shù)。D跨平臺的協(xié)作特性。D面向服務(wù)的開發(fā)。WCFWPF類似,是基于.NETFramework3.5平臺上的一組類庫。使用這組類庫,開發(fā)人員可以使用熟悉的.NET程序語言開發(fā)分布式應(yīng)用程序。WCF實(shí)現(xiàn)上是高效地整合Web服務(wù)、.NET企業(yè)服務(wù)、NETRemotingMSMQ等技術(shù)。開發(fā)員可以使用特性式編程,簡化了不必要的底層復(fù)雜性。WCF的兩個(gè)的程序集如下所示。DSystem.Runtime.Serialization.dllWPF中序列化和反序列化對象的類型以DSystem.ServiceModel.dll:這是WCF的程序集,包含用于構(gòu)建WCF的類型。這兩個(gè)程序集定義了很多新名空間和類型,讀者可以參考相關(guān)的書籍或者DSystem.Runtime.SerializationWCF中控制數(shù)據(jù)序列化和反序列化的多個(gè)DSystem.ServiceModel:這是WCF的主名空間,用于定義綁定和類型宿主,同DSystem.ServiceModel.Description:定義WCF配置文件中定義的地址(Addresses,DSystem.ServiceModel.Security:定義多種控制安全方面的類型。一個(gè)WCF應(yīng)用程序通常包含3個(gè)相關(guān)LL調(diào)用者能夠進(jìn)行通信的類型,也稱為契約WFS2008WF對WF生7.13 圖7.13WCF服務(wù)庫模關(guān)于WCF編程技術(shù)的信息,如果讀者有,可以參考相關(guān)的書籍,這是一個(gè)WindowsCardSpace概WindowsCardSpace是一種統(tǒng)一驗(yàn)證的平臺。這種技術(shù)使用一種統(tǒng)的方法來識別用戶的,解決了用戶擁有繁多的煩惱。隨著互聯(lián)網(wǎng)內(nèi)容的日漸豐富,用戶的選擇性也越來越多,導(dǎo)致所需的用戶名和也越來越多。最讓人頭疼的是也日漸增多。CardSpace技術(shù)被設(shè)計(jì)用于解決這些問題。CardS
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川省瀘縣高三三診模擬語文試卷(含答案)
- 中職班主任選手備賽七部曲匯報(bào)人王秀芳講解
- 職業(yè)溝通與禮儀健康管理系施怡寧講解
- 簡單聘用合同范本
- 2025抵押物的借款合同范本「標(biāo)準(zhǔn)版」
- 實(shí)習(xí)生用人合同協(xié)議書
- 2025三方工程合同
- 提高溝通技巧的職業(yè)培訓(xùn)方案
- 安防監(jiān)控工程施工合同范本
- 蘇教版六年級數(shù)學(xué)下冊第四單元大單元教學(xué)設(shè)計(jì)
- 北師大版七年級上冊數(shù)學(xué)思維導(dǎo)圖全套
- 13《馬說》(原卷版)-2023年中考課標(biāo)文言文20篇專項(xiàng)訓(xùn)練
- 人教版三下勞動項(xiàng)目四《蒸蛋羹》教學(xué)設(shè)計(jì)
- 質(zhì)量為綱-華為公司質(zhì)量理念與實(shí)踐
- 2023徐金桂“徐徐道來”(行政法知識點(diǎn))版
- 《事故汽車常用零部件修復(fù)與更換判別規(guī)范》
- JBT 1306-2024 電動單梁起重機(jī)(正式版)
- 信息科技重大版 七年級下冊 互聯(lián)網(wǎng)應(yīng)用與創(chuàng)新 第一單元單元教學(xué)設(shè)計(jì) 互聯(lián)網(wǎng)創(chuàng)新應(yīng)用
- 高中政治必刷題 高考真題 必修3《政治與法治》(原卷版)
- 2024年輔警招聘考試試題庫含完整答案(各地真題)
評論
0/150
提交評論