說(shuō)中的入門者必讀,既然是入門者,當(dāng)然我選擇了《深入淺出WPF》這本書...
WPF是微軟未來(lái)的發(fā)展趨勢(shì),自WIN7以來(lái)包括前不久發(fā)布的WIN8,核心還是WPF,在此,將自己的學(xué)習(xí)成果做一個(gè)總結(jié),同時(shí)將自己學(xué)習(xí)積累的東西和廣大博友分享,希望大家能共同進(jìn)步。在文章的結(jié)尾我會(huì)將全系列的源代碼地址提供給大家,有需要的朋友可以下載下來(lái)自己研究研究。
什么是WPF?為什么要學(xué)習(xí)WPF?
WPF 是Windows Presentation Foundation的簡(jiǎn)稱,顧名思義是專門用來(lái)寫程序表示層的技術(shù)和工具。
為什么要學(xué)習(xí)WPF?
許多朋友也許會(huì)問:既然表示層技術(shù)那么多,為什么還要推出WPF作為表示層技術(shù)呢?我們?cè)捑W(xué)習(xí)WPF有什么收益和好處呢,這個(gè)問題我們從兩個(gè)方面進(jìn)行回答。
首先,只要開發(fā)表示層程序就不可避免的要和4種功能性代碼打交道,他們分別是:
數(shù)據(jù)模型:現(xiàn)實(shí)世界中事物和邏輯的抽象。
業(yè)務(wù)邏輯:據(jù)模型之間的關(guān)系和交互。
用戶界面:由控件構(gòu)成,于用戶進(jìn)行交互的界面,用于把數(shù)據(jù)展示給用戶并響應(yīng)用戶輸入。
界面邏輯,控件與控制之間的的關(guān)系和交互。
WPF的功能?
WPF的功能是用來(lái)編寫應(yīng)用程序的表示層,至于業(yè)務(wù)邏輯層和數(shù)據(jù)層也有專門的新技術(shù),比如業(yè)務(wù)邏輯層的新技術(shù)WCF(Windows Communication Foundation)和WF(Windows Workflow Foundation)。微軟用于表示層開發(fā)的技術(shù)不算少,包括WPF,Windows Forms,ASP.NET,Silveright等。換句話說(shuō),無(wú)論使用哪種技術(shù)做為表示層技術(shù),程序的邏輯層和數(shù)據(jù)層都是相同的。
WPF和Silveright的關(guān)系
目前,.NET開發(fā)人員學(xué)習(xí)WPF回報(bào)是非常高的,原因是在微軟整個(gè)新一代開發(fā)框架都能看到它的影子,微軟新一代開發(fā)技術(shù)框架包括Windows Presentation Foundation(WPF),Windows Communication Foundation(WCF),Windows Workflow Foundation(WF),在后續(xù)的文章中我們會(huì)專注于將WPF,而WCF的用途是編寫分布式應(yīng)用程序的業(yè)務(wù)邏輯層,并以網(wǎng)絡(luò)服務(wù)的形式暴露給客戶端的服務(wù)消費(fèi)者,基于WCF和Entity Framework的WCF Data Service和WCF RIA Service是微軟迄今最佳的數(shù)據(jù)訪問層,而這一數(shù)據(jù)的最佳消費(fèi)者就是WPF和Silveright,所以學(xué)習(xí)WPF技術(shù)會(huì)給WCF的學(xué)習(xí)錦上添花。WF的主要作用是設(shè)計(jì)工作流,而設(shè)計(jì)工作流的編程語(yǔ)言正是WPF中界面編程語(yǔ)言----XMAL,學(xué)習(xí)完WPF,WF也就會(huì)了一小半。
如果說(shuō)學(xué)習(xí)完WPF完成以后就學(xué)會(huì)了一小半的WF,那么學(xué)習(xí)完WPF以后,Silveright也就學(xué)會(huì)了80%,為什么這么說(shuō)呢?因?yàn)槲④浽径xSilveright是WPF的子集,是WPF的"網(wǎng)絡(luò)版"(Silveright的開發(fā)代號(hào)為WPF/E,意為WPF簡(jiǎn)化版)。為了讓W(xué)PF的瀏覽器跑出來(lái),微軟所做的事情就是在技術(shù)原理不變的情況下對(duì)WPF進(jìn)行瘦身------去掉一些不常用的功能,簡(jiǎn)化一些功能的實(shí)現(xiàn),對(duì)多組實(shí)現(xiàn)同一目的類庫(kù)進(jìn)行刪減,只保留一組,在添加一些網(wǎng)絡(luò)通信功能,通過(guò)以下這張表,可以看到Silveright和WPF的技術(shù)重疊率之高:
如今Silveright炙手可熱的另一個(gè)原因是微軟上一代手機(jī)平臺(tái)Windows Phone 7也采用它來(lái)作為開發(fā)平臺(tái)(此前的Windows Mobile使用的簡(jiǎn)化版的Windows Form作為開發(fā)平臺(tái))。WIndows Phone7中運(yùn)行Silveright與瀏覽器中運(yùn)行Silveright別無(wú)二致,因此學(xué)習(xí)完WPF之后,手機(jī)平臺(tái)上的程序也會(huì)寫了。當(dāng)然,Window Phone8將繼續(xù)支持這項(xiàng)技術(shù)。
深入淺出WPF 目錄:
序言
1. 什么是WPF
2. 為什么要學(xué)習(xí)WPF
第一章 XAML概覽
1. XAML是什么?
2. XAML有哪些優(yōu)點(diǎn)
第二章 從零起步認(rèn)識(shí)XAML
1. 新建WPF項(xiàng)目
2. 剖析最簡(jiǎn)單的XAML代碼
第三章 系統(tǒng)學(xué)習(xí)XAML語(yǔ)法
1. XAML文檔的樹形結(jié)構(gòu)
2. XAML中為對(duì)象屬性賦值的語(yǔ)法
2.1 使用標(biāo)簽的Attribute為對(duì)象屬性賦值
2.2 使用TypeConverter
2.3 屬性元素
2.4 標(biāo)記擴(kuò)展(Markup Extensions)
3. 事件處理器與代碼后置
4. 導(dǎo)入程序集和引用其中的名稱空間
5. XAML的注釋
第四章 x名稱空間詳解
1. x名稱空間里都有什么
2. x名稱空間中的Attribute
2.1 x:Class
2.2 x: ClassModifier
2.3 x: Name
2.4 x:FieldModifier
2.5 x:Key
2.6 x:Shared
3. x名稱空間中的標(biāo)記擴(kuò)展
3.1 x:Type
3.2 x:Null
3.3 標(biāo)記擴(kuò)展實(shí)例的兩種聲明語(yǔ)法
3.4 x:Array
3.5 x:Static
4. XAML指令元素
第五章 控件與布局
1. 控件到底是什么
2. WPF的內(nèi)容模型
2.1 內(nèi)容與內(nèi)容屬性
3. 各類內(nèi)容模型詳解
3.1 ContentControl族
3.2 HeaderedContentControl族
3.3 ItemsControl族
3.4 HeaderedItemsControl族
3.5 Decorator族
3.6 TextBlock和TextBox
3.7 Shape族元素
3.8 Panel族元素
4. UI布局(Layout)
4.1 布局元素
4.2 Grid
4.3 StackPanel
4.4 Canvas
4.5 DockPanel
4.6 WrapPanel
第六章 深入淺出話Binding
1. Data Binding在WPF中的地位
2. Binding基礎(chǔ)
3. Binding的源與路徑
3.1 把控件作為Binding源與Binding標(biāo)記擴(kuò)展
3.2 控制Binding的方向及數(shù)據(jù)更新
3.3 Binding的路徑(Path)
3.4 “沒有Path”的Binding
3.5 為Binding指定源(Source)的幾種方法
3.6 省略Source的Binding
3.7 使用集合對(duì)象作數(shù)據(jù)源
3.8 使用使用ADO.NET對(duì)象作為Binding的源
3.9 使用使用XML數(shù)據(jù)作為Binding的源
3.10 使用使用LINQ檢索結(jié)果作為數(shù)據(jù)源
3.11 使用ObjectDataProvider
3.12 使用Binding的RelativeSource
4. Binding對(duì)數(shù)據(jù)的轉(zhuǎn)換與校驗(yàn)
4.1 Binding的數(shù)據(jù)校驗(yàn)
4.2 Binding的數(shù)據(jù)轉(zhuǎn)換
5. MultiBinding(多路Binding)
第七章 深入淺話屬性
1. 屬性(Property)的來(lái)龍去脈
2. 依賴屬性(Dependency Property)
2.1 依賴屬性對(duì)內(nèi)存的使用方式
2.2 聲明和使用依賴屬性
2.3 依賴屬性值存取的秘密
3. 附加屬性(Attached Properties)
第八章 深入淺出話事件
1. 近觀WPF的樹形結(jié)構(gòu)
2. 事件的來(lái)龍去脈
3. 深入淺出路由事件
3.1 使用WPF內(nèi)置路由事件
3.2 自定義路由事件
3.3 Source與OriginalSource
3.4 事件也附加——深入淺出附加事件
第九章 深入淺出話命令
1. 命令系統(tǒng)的基本元素與關(guān)系
1.1 命令系統(tǒng)的基本元素
1.2 基本元素之間的關(guān)系
1.3 小試命令
1.4 WPF的命令庫(kù)
1.5 命令參數(shù)
1.6 命令與Binding的結(jié)合
2. 近觀命令
2.1 ICommand接口與RoutedCommand
2.2 自定義Command
第十章 深入淺出話資源
1. WPF對(duì)象級(jí)資源的定義與查找
2. 且“靜”且“動(dòng)”用資源
3. 向程序添加二進(jìn)制資源
4. 使用Pack URI路徑訪問二進(jìn)制資源
第十一章 深入淺出話模板
1. 模板的內(nèi)涵
2. 數(shù)據(jù)的外衣DataTemplate
3. 控件的外衣ControlTemplate
3.1 庖丁解牛看控件
3.2 ItemsControl的PanelTemplate
4. DataTemplate與ControlTemplate的關(guān)系與應(yīng)用
4.1 DataTemplate與ControlTemplate的關(guān)系
4.2 DataTemplate與ControlTemplate的應(yīng)用
4.3 尋找失落的控件
5. 深入淺出話Style
5.1 Style中的Setter
5.2 Style中的Trigger
第十二章 繪圖和動(dòng)畫
1. WPF繪圖
1.1 繪制圖形
2. 圖形的效果與濾鏡
2.1 簡(jiǎn)單易用的BitmapEffect
2.2 豐富多彩的Effect
3. 圖形的變形
3.1 呈現(xiàn)變形
3.2 布局變形
4. 動(dòng)畫
4.1 簡(jiǎn)單獨(dú)立動(dòng)畫
4.2 場(chǎng)景
4.3 綜合實(shí)例資源