天天看點

2000條你應知的WPF小姿勢 基礎篇<1-7>

  本系列我不僅會翻譯他的每一個tip,也會加入自己開發之中的看法和見解,希望能夠以更貼近的語言來展示大師的風采。本系列我希望自己也能和他一樣堅持下來,每天的進步才能促成偉大。

  #1. 什麼是WPF

  WPF(Windows Presentation Foundation)是從.Net Framework從3.0開始加入的提供了全新的多媒體互動使用者圖形界面的類庫,真正做了開發和設計分離的工作。WPF程式可以在桌面運作,也可以在WEB浏覽器上運作(Silverlight).

  WPF使用3D矢量圖形元素來進行圖形渲染,獨立于螢幕分辨率。使用DirectX硬體加速來渲染圖形元素。帶來了更絢麗的色彩和炫酷的效果。.Net 3.0後WPF逐漸代替Windows Form成為了新一代的Windows用戶端技術。

  #2. 圖形渲染級别(Rendering Tiers)

  WPF應用程式會自動檢查顯示卡運作能力并配置設定給一個渲染能力值。訓示哪些功能可以通過圖形層次完成。

  級别Tier 0 - 沒有硬體加速,所有用軟體繪制。

  級别Tier 1 - 一部分使用硬體加速,需要DirectX版本高于9.0. 硬體加速部分:徑向漸變(Radial gradients), 3D亮點圖形計算(3D lighting calculations), 文字渲染(Text rendering), 3D抗鋸齒(3D anti-aliasing).

  級别Tier 2 - 大部分使用硬體加速。Directx版本高于9.0

  獲得目前渲染級别方法:

 

  #3. 矢量圖形,與分辨率無關

  在WPF中,圖形渲染使用的是矢量,而不是位圖。無論是預設控件還是自定義樣式圖像都是與分辨率無關。

  WPF代替了位圖在螢幕上渲染圖形每個像素的方法,矢量繪制了一些基礎的單元:如形狀,線,多邊形等。

  因為WPF使用了矢量圖形繪制,是以使用者界面元素獨立于實際裝置的分辨率來渲染。WPF繪制的圖像尺寸使用了與裝置無關的機關,每一個機關是1/96英寸。這意味着使用者界面的元素總是會呈現指定大小,不會被分辨率(DPI)影響。

  

  #4. WPF布局(Layout)

  WPF使用了流式布局模型來進行定位元素,而不是使用精确的像素坐标來确定控件的位置。使用了描述性語言XAML來進行定位,類似HTML和CSS網頁布局,極為簡捷友善。

  流式布局模型可以使WPF布局可以進行動态調整以适合視窗,呈現流動狀态。WPF界面的大小和分辨率并無關系。

  所有的WPF控件都是被承載在一個容器(Container)裡,主流的容器有:Grid, DockPanel, StackPanel, WrapPanel.

  #5. 樣式(Style)

  樣式是類似CSS功能的一組可以重用的設定類似性質控件的屬性值。你可以将之存儲為資源(Resource), 然後應用在多個控件上。舉個樣例,你應用中所有的button都是一個風格,你需要先定義一個樣式作為靜态資源(StaticResource)

  然後你就可以應用到你需要樣式的button上:

  #6. 模闆(Template)

  模闆類似與樣式(Style), 但實際并不相同。模闆可以更換一個UI控件的外觀,但不能改變其行為。一般Template都定義在Style之中。WPF每一個控件都有其預設的模闆,你可以撰寫一個模闆來代替其預設模闆來進行私人定制。

  通過改變模闆的屬性來改變其模闆。下面是一個例子,我們建立了一個新的button,它具有了加厚的藍色邊框。

  #7. 指令(Commands)

  WPF提供對指令(Commands)的支援,Command在WPF中是事件的進化體。WPF可以将Command綁定到空間上,來減少重複的事件代碼。多個控件可以使用同一個Command邏輯。Command可以使UI和邏輯分離,實作了UI操作,背景執行指令邏輯。WPF程式内置了很多指令,如Paste, Copy, Save等。

  下面代碼展示了控件綁定指令的兩種方式:

  2014-05-22 會更新後續8-14,敬請期待。

繼續閱讀