




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
7WPF編程WPFWindowsPresentationFoundationWindows表現(xiàn)層基礎(chǔ),是微軟公司在.NETFramework3.5WPF可以在WindowsVista操作系統(tǒng)平臺(tái)上開發(fā)出具有炫目視覺效果的應(yīng)用程序,當(dāng)然也可以應(yīng)用在WindowsXPWindows2003WPF的特點(diǎn)和機(jī)構(gòu)以及如何在.NET3.5框架上應(yīng)用WPF。WPF非常容易上手。WPF提供了非常多的新的概念和技術(shù),將會(huì)改變傳統(tǒng)Windows程序員的WindowsVista操作系統(tǒng)下的全新的表現(xiàn)層技術(shù),WPF完美地整合了矢量圖形、提供了一種式編程語(yǔ)言XAML。微軟同時(shí)提供了Expression設(shè)計(jì)工具,讓設(shè)Windows如果讀者具有多年的Windows程序設(shè)計(jì)經(jīng)驗(yàn),無(wú)論使用何種開發(fā)工具,比如VisualBasic、Delphi、C++等,為了創(chuàng)建Windows用戶界面,都會(huì)直接或間接地使用到Windows操DUser32WindowsDGDI/GDI+API很多應(yīng)用程序開發(fā)框架中,提供UI或繪圖開發(fā)方法都是對(duì)這兩個(gè)子系A(chǔ)PI的Win32APIBolandVCL、微軟的MFC等。Windows1.0Windows圖形服務(wù)已經(jīng)越來(lái)越穩(wěn)固。然而隨著軟件技術(shù)的日益發(fā)展,傳統(tǒng)的圖形UI已經(jīng)越來(lái)越難以滿足用戶對(duì)界面日益增長(zhǎng)AvalonWindowsPresentationFoundation,擺脫了傳統(tǒng)圖形UI開發(fā)的不足,不再基于User32GDI/GDI+DirectX技術(shù)。技術(shù)的復(fù)雜性,以及其與硬件圖形卡的緊密結(jié)合的特性,很少有軟件基于DirectX來(lái)進(jìn)行開發(fā)。WPF的出現(xiàn)彌補(bǔ)了這種不足,意味著開發(fā)人員可以在普通的商業(yè)應(yīng)用程序中應(yīng)用一User327.1.3小節(jié)中WPF架構(gòu)時(shí),將會(huì)具體討論WPF如何利用DirectX進(jìn)行表示層的呈現(xiàn)。WPF的功能特D基于矢量繪圖技術(shù):WPFWPF使用Direct3D進(jìn)行圖形的渲染,充分利用顯卡的GPU,即圖形處理單元。D設(shè)備無(wú)關(guān)單位:這是一個(gè)非常重大的改進(jìn),WPF1/96的邏輯單位,這使應(yīng)用面,在不同的顯示分辨率下時(shí),會(huì)呈現(xiàn)不同的顯示大小,WPF彌補(bǔ)了這種不足。D式的程序設(shè)計(jì):WPF使用全新的XAML標(biāo)記語(yǔ)言,進(jìn)行用戶界面的設(shè)計(jì),配合代碼后置文件來(lái)開發(fā)應(yīng)用程序。如果讀者有過(guò)ASP.NET程序開發(fā)經(jīng)驗(yàn),那么DWeb風(fēng)格的布局模型:WPF增強(qiáng)了流式布局模型體驗(yàn),除了使用特定坐標(biāo)進(jìn)行固D豐富的繪圖模型:WPF除了可以處理基本圖形、文本塊之外,還提供了很多的新的繪圖特性,比如真正的透明控件,使用不同的堆疊多個(gè)控件以及原生的3D支持特性。D原生的多、動(dòng)畫支持:現(xiàn)在,WPF應(yīng)用程序內(nèi)置了動(dòng)畫特性。設(shè)計(jì)人員可以使用XAML標(biāo)記語(yǔ)言或借助于ExpressionBlend設(shè)計(jì)工具來(lái)設(shè)計(jì)動(dòng)畫。同時(shí),也可以使用ExpressionBlend設(shè)計(jì)多音。這個(gè)工具會(huì)生成XAML代碼,進(jìn)而豐富WPF應(yīng)用程序的可交互性。D樣式和模板特性:類似于ASP.NET中的,或者是CSS樣式特性,使應(yīng)用程序板控制Button控件的輸出。D基于頁(yè)面的應(yīng)用程序:WPF允許開發(fā)人員創(chuàng)建瀏覽器風(fēng)格的應(yīng)用程序,讓用戶使用類似超的方式在頁(yè)面中進(jìn)行導(dǎo)航。應(yīng)用程序也可以在瀏覽器中比如Firefox或者是InternetExplorer中運(yùn)行。WPF處理了很多繁雜的細(xì)節(jié),比如歷史頁(yè)面等。WPF架構(gòu)簡(jiǎn)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é)會(huì)對(duì)由這些基類派生出來(lái)的子類進(jìn)行詳細(xì)地介紹。在深入學(xué)習(xí)WPF應(yīng)用程序之前,有必要大概了解一下WPF中的類層次結(jié)WPF的核心命名空間都以System.Windows開始,比如System.Windows,這是WindowsForms編程工具箱的一部分。下面對(duì)這些基類進(jìn)行分別介紹,如下所示。 System.Threading.DispatcherObject類:WPF用戶界面元素交互時(shí),將會(huì)產(chǎn)生不安全的影響。為了簡(jiǎn)化這個(gè)模型,WPF使用一DispatcherObject派生子類,應(yīng)用程序的用戶界面可以檢7.2WPF基類的類層次結(jié)構(gòu)DSystem.Windows.DependencyObject:WPF主要通過(guò)屬性來(lái)與界面元素交互。WPF提供了一套強(qiáng)大的屬性系統(tǒng),并使用式的屬性語(yǔ)法。使用屬性的一個(gè)例子是賴關(guān)系更改時(shí),會(huì)自動(dòng)重新驗(yàn)證屬性值。例如,如果具有一個(gè)繼承的屬性如DSystem.Windows.Media.Visual:可以把Visual類看成是一個(gè)圖形對(duì)象,WPF中的WPFAPImilcore.dllVisual的任何類都有能DSystem.Windows.UIElement:UIElement定義了WPF的子系統(tǒng),包括布局Layout、輸入Input和Event、焦點(diǎn)等。比如布局,這是WPF的一個(gè)。UIElementMeasureArrange兩階段的處理Panel控件時(shí)將會(huì)進(jìn)行詳細(xì)地介紹。UIElement引入了增強(qiáng)的事件傳遞系統(tǒng),稱為路由。路由可以將上下沿傳遞。本書在討論依賴DSystem.Windows.FrameworkElement:作為WPFFrameworkElementUIElement僅定義的成員。比如,UIElement設(shè)置WPF布局系統(tǒng)的基礎(chǔ),而FrameworkElement則包括幾個(gè)關(guān)鍵的屬性提供對(duì)布DSystem.Windows.Shapes.Shape:基本的形狀類,比如從該類派生的Rectangle、Polygon、Ellipse、Line和Path等。DSystem.Windows.Controls.Control:控件是一種用于與用戶進(jìn)行交互的元素,比如TextBox、ButtonListBox等。Control類添加了一些屬性比如設(shè)置字體、前景色和背景色等。別外,Control類還提供了對(duì)控件模板的支持,允許開發(fā)人員使用自已注意:WindowsForms不同的是WindowsForms中,每個(gè)呈現(xiàn)在Form上的對(duì)象WPF則與之不同,可視化對(duì)象稱為元素,只有能夠接收焦點(diǎn)并DSystem.Windows.Controls.ContentControl:這是WPF中一個(gè)非常重要的基類。ContentControl是其他內(nèi)容控件繼承自的類,用來(lái)呈現(xiàn)單塊內(nèi)容。派生自ContentControlContent屬性。ContentObject,因此,在ContentControl中可以放置的內(nèi)容沒有任何限制??梢允褂每蓴U(kuò)展應(yīng)用程序標(biāo)記語(yǔ)言(XAML)或代碼來(lái)設(shè)置Content。DSystem.Windows.Controls.Panel:這是所有布局容器面板的基類。布局面板能夠使WPF前面介紹了太多的理論知識(shí),現(xiàn)在來(lái)介紹開發(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自定義控件庫(kù)來(lái)為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ū)將會(huì)自動(dòng)產(chǎn)生通常一個(gè)XAML文件會(huì)關(guān)聯(lián)到一個(gè)代碼后置(Code-Behind)文件,可以通過(guò)按下F7鍵序代碼的編寫。VisualStudio2008優(yōu)秀的智能提示和代碼片斷功能,大大提高了開發(fā)的效ExpressionBlendWPF的首選交互式設(shè)計(jì)工具,其操作界面非常類似于一款矢量繪圖軟件。Blend主要用于設(shè)計(jì)WPF應(yīng)用程序的交互式設(shè)計(jì)。設(shè)計(jì)人員可以使用ExpressionDesignXAMLBlendXAML文件,在Blend中設(shè)計(jì)交互以及動(dòng)畫。界面如圖7.5所示。 圖 ExpressionBlend設(shè)計(jì)工用戶界面的設(shè)計(jì)。ExpressionBlend的“新建項(xiàng)目”框如圖7.6所示。應(yīng)用程序,一種是控件庫(kù)。當(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)容中會(huì)詳細(xì)討論這兩個(gè)WPF中的重要概念。使用XAMLPad,開發(fā)人員可以0時(shí)實(shí)地顯示和編輯XAML0XamlPad.exeXamlPad_save.xaml文件,將會(huì)自動(dòng)保存最近一次使用的XAML文本。0XAMLPadXAML語(yǔ)法,并重新顯示新的XAMLWindowsF5鍵,XAMLPad會(huì)自動(dòng)彈出一PageXAML會(huì)自動(dòng)的呈現(xiàn)在上方的XAMLPad幫助ZAM3D第工具(3D模型ZAM3D是一款功能強(qiáng)大的創(chuàng)建WPF3D圖形的第工具。該工具可以將3D模型XAML格式,然后可以使用ExpressionBlendDesign來(lái)3DZAM3D工具,設(shè)計(jì)人員可以進(jìn)行三維建模,設(shè)計(jì)三維動(dòng)畫,然后將結(jié)果導(dǎo)出為XAML的格式。ZAM3D操作界面如圖7.87.8ZAM3D操作界讀者可以從ht /products/ZAM3D/DefaultPDC.asp或取更詳細(xì)的信息,并且可以在該上相關(guān)的Demo來(lái)進(jìn)行學(xué)習(xí)。VisualStudio2008WPFWindows應(yīng)用程序,然后會(huì)VisualStudio2008WPF項(xiàng)目模板來(lái)WPF應(yīng)用程序。首WPF項(xiàng)目模板來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的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è)的工具箱中拖動(dòng)一個(gè)按鈕到VS2008的窗口設(shè)計(jì)視圖中??梢钥吹剑赬AML視圖區(qū)會(huì)自動(dòng)地添加相應(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會(huì)自動(dòng)切換到后置代碼(Code-Behind)窗口,并生成了單擊框架。在其中添加一個(gè)MessageBox方法,用于當(dāng)用戶單擊按鈕后,彈出一privateprivatevoid{o_Click(objectsender,RoutedEventArgsMessageBox.Show("歡迎學(xué)習(xí)WPF,這是第一WPF應(yīng)用程序}可以看到該單擊的參數(shù)是RoutedEventArgs類型。這是WPF中應(yīng)用廣泛的VS2008自動(dòng)添加了單擊。如下所示。<Window Title="WPF應(yīng)用示例Height="300<ButtonMargin="108.171,113.625,94.536,125.442" o么說(shuō)明:前面在屬性窗口中的設(shè)置都可以從XAML看到WPFWPF應(yīng)用程序中,是由代碼和標(biāo)記語(yǔ)言的組成,類似于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è)窗體、頁(yè)面等。可以在“解決方案資源管理器”中右擊項(xiàng)目名稱,在彈出的快捷菜單中選擇“添加新項(xiàng)”命令來(lái)添加的窗體只有理解WPF應(yīng)用程序的結(jié)構(gòu),才能真切地體會(huì)到這些文件背后的意義。其實(shí),以便管理應(yīng)用程序的生命期。Windows1.xaml及其代碼后置文件也是可選的,開發(fā)人員可以只創(chuàng)建Windows類的實(shí)例,交付給Application類即可。么說(shuō)明:一個(gè)WPF應(yīng)用程序通常是由一個(gè)XAML文件和一個(gè)代碼后置文件組成,這不是絕將會(huì)詳細(xì)地介紹XAML語(yǔ)言以及Application類。WPF與.NETFramework3.5通信基礎(chǔ)。WindowsCommunicationFoundation,簡(jiǎn)稱為WF的Windows工作流基礎(chǔ)WindowsWorkflowFoundation,以及用于統(tǒng)一驗(yàn)證的WindowsCardSpace。這些技術(shù)都可以與WPF緊密集成,大大簡(jiǎn)化和統(tǒng)一.NET平臺(tái)上的應(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跨平臺(tái)的協(xié)作特性。D面向服務(wù)的開發(fā)。WCFWPF類似,是基于.NETFramework3.5平臺(tái)上的一組類庫(kù)。使用這組類庫(kù),開發(fā)人員可以使用熟悉的.NET程序語(yǔ)言開發(fā)分布式應(yīng)用程序。WCF實(shí)現(xiàn)上是高效地整合Web服務(wù)、.NET企業(yè)服務(wù)、NETRemotingMSMQ等技術(shù)。開發(fā)員可以使用特性式編程,簡(jiǎn)化了不必要的底層復(fù)雜性。WCF的兩個(gè)的程序集如下所示。DSystem.Runtime.Serialization.dllWPF中序列化和反序列化對(duì)象的類型以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對(duì)WF生7.13 圖7.13WCF服務(wù)庫(kù)模關(guān)于WCF編程技術(shù)的信息,如果讀者有,可以參考相關(guān)的書籍,這是一個(gè)WindowsCardSpace概WindowsCardSpace是一種統(tǒng)一驗(yàn)證的平臺(tái)。這種技術(shù)使用一種統(tǒng)的方法來(lái)識(shí)別用戶的,解決了用戶擁有繁多的煩惱。隨著互聯(lián)網(wǎng)內(nèi)容的日漸豐富,用戶的選擇性也越來(lái)越多,導(dǎo)致所需的用戶名和也越來(lái)越多。最讓人頭疼的是也日漸增多。CardSpace技術(shù)被設(shè)計(jì)用于解決這些問(wèn)題。CardS
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工會(huì)年度工作總結(jié)
- 北師大版三年級(jí)下冊(cè)數(shù)學(xué)第一次月考(1-2單元)檢測(cè)卷(含答案)
- 教育學(xué)?;顒?dòng)主題班會(huì)
- 幼兒園教育保育評(píng)估指南
- 天然氣灶具知識(shí)培訓(xùn)課件
- 教育扶貧控輟保學(xué)政策
- 公司車輛停放培訓(xùn)
- 中秋立體美術(shù)課件
- 教育的未來(lái):探索新時(shí)代的教學(xué)模式
- 《GBT 40339-2021金屬和合金的腐蝕 服役中檢出的應(yīng)力腐蝕裂紋的重要性評(píng)估導(dǎo)則》全新解讀
- 心理咨詢師專業(yè)技能培訓(xùn)課件
- 產(chǎn)教融合校企合作框架協(xié)議書8篇
- 超星爾雅學(xué)習(xí)通《工程倫理(浙江大學(xué))》2025章節(jié)測(cè)試答案
- 2025年招聘社工面試題型及答案
- 2025年駕駛?cè)y(cè)試題及答案
- 2025-2030年中國(guó)加濕器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 中醫(yī)情志調(diào)適在兒童的實(shí)踐與應(yīng)用
- 農(nóng)產(chǎn)品電商農(nóng)村電商供應(yīng)鏈?zhǔn)謨?cè)
- 兒童生長(zhǎng)發(fā)育遲緩
- 肯氏分類課件
- 2025年河南工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及參考答案
評(píng)論
0/150
提交評(píng)論