在正文開始以前須要介紹一我的:Sean Sexton. 來自明尼蘇達雙城的軟件工程師,對C#和WPF有着極深的熱情。最爲出色的是他維護了兩個博客:2,000Things You Should Know About C# 和 2,000 Things You Should Know About WPF 。聽到博客名字就懂這我的有多偉大了吧。他以相似微博式的150字簡短語言來天天更新一條WPF和C#重要又容易被遺忘的知識。Follow他的博客也有一段日子了,很但願可以分享給你們。html
本系列我不只會翻譯他的每個tip,也會加入本身開發之中的見解和看法,但願可以以更貼近的語言來展現大師的風采。本系列我但願本身也能和他同樣堅持下來,天天的進步才能促成偉大。前端
若是你們更想了解這個偉大的程序員,這個是訪談連接,他在訪談中有談到本身平生和對編程相關學習的見解,我以爲對你們會幫助很大,有時間後面會出一篇翻譯這個訪談的文章供你們閱讀,但願你們可以關注。linux
在這裏鄭重說明.該系列是基於Sean Sexton先生的英文博客, Sean Sexton擁有所有版權和撤銷權利。程序員
前文:<1-7>WPF, 渲染, 矢量, 佈局, 樣式, 模板, 命令 express
[小九的學堂,致力於以平凡的語言描述不平凡的技術。如要轉載,請註明來源:小九的學堂。cnblogs.com/xfuture]編程
#8. Xaml和Code Behindwindows
WPF應用是由前端代碼Xaml(可擴展應用程序標記語言)和後臺代碼(託管代碼)組成。標記性語言Xaml定義了UI的佈局和外觀,後臺定義了行爲和邏輯。WPF技術實現了UI和後臺邏輯的分離。
Xaml是一個基於Xml的聲明式標記語言編寫的。Xaml中組織了全部的控件,以及他們的位置和父子關係。後端.cs託管代碼描述了運行時UI的邏輯和行爲。在編譯階段xaml和xaml.cs會編譯爲一個class, 因此xaml.cs你能夠看出是patical的。後端
下面代碼是一個Xaml佈局的樣例:瀏覽器
1 <Grid> 2 <StackPanel> 3 <Button Content="Save" Height="23" Name="btnSave" Width="75" Click="btnSave_Click" /> 4 <Button Content="Load" Height="23" Name="btnLoad" Width="75" Click="btnLoad_Click" /> 5 </StackPanel> 6 </Grid>
#9. 標記性語言的優點app
使用標記性語言Xaml和後臺代碼Xaml.cs模型開發比一切都定義在代碼中有着不少的優點。使用Xaml的好處有:
1. 能夠在不影響控件行爲的狀況下更改用戶界面的樣式和用戶體驗。
2. 設計人員能夠和開發同時工做,一個負責Xaml作用戶界面, 一個負責撰寫後臺邏輯。分工兩不誤。
3. 微軟提供了強大的設計工具Expression Design和Blend, 使用工具能夠免寫代碼, 設計的界面能夠直接導出成Xaml.
4. Vs2013已經和Blend作了很好的集成,能夠更高效率的作設計和開發。
#10. 基於Page的頁面導航
WPF應用程序能夠用一些pages的集合以及其頁面導航機制來進行構建。和WindowsForm的文檔流式的模型不一樣,它擁有一個主窗體和一個能夠彈出的提醒窗口。
若是想要建立一個基於Page的WPF程序,你須要定義一個Page來代替傳統的Window:
<Page x:Class="WpfApplication7.Page1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300" Title="Page1"> <Grid> <Label Content="This is a page, not a window." Height="28" HorizontalAlignment="Left" Margin="52,75,0,0" Name="label1" VerticalAlignment="Top" /> </Grid> </Page>
同時你須要指定app的starturi爲該page
<Application x:Class="WpfApplication7.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="Page1.xaml"> </Application>
此時你便擁有了一個基於Page導航的WPF應用程序。
#11. WPF vs Silverlight vs ASP.NET
WPF, Silverlight, ASP.NET是微軟開發的三大平臺。下面列出三種平臺各自的特色
WPF:
1. 開發Windows應用程序
2. 以最豐富的用戶控件和windows特定功能構建的客戶端用戶界面。
3. 只能運行在Windows上
4. 須要完整的.net framework支持。
Silverlight:
1. 開發運行在Web端
2. 輕量客戶端,豐富的UI控件,相似於WPF客戶端呈現
3. 須要安裝Silverlight插件在瀏覽器上
4. Silverlight的Moonlight版本能夠在linux上運行
5. 第一次加載時須要安裝SL插件。
ASP.NET:
1. 開發Web應用程序
2. 輕量客戶端,有着通用的Web控制
3. 能夠在服務端運行,也能夠運行在全部支持HTML的客戶端,包括移動設備的瀏覽器
4. 不須要在客戶端安裝插件
#12. 在3D硬件加速應用中使用Direct3D
雖然WPF提供3D繪製,可是3D應用中仍是須要Direct3D來進行3D圖形的繪製以呈現其最大性能。
並且WPF 4.0是基於DirectX9.0, 因此並不支持Direct3D 10 和 Direct3D 11。
#13. WPF的版本記錄
雖然下面列出WPF版本的歷史記錄和相對應的VS版本。因爲WPF是.NET Framework框架一部分,因此版本號是跟着.NET Framework的。下面就是其記錄:
.NET Framework 3.0 – Nov, 2006
#14. Silverlight and WPF 不一樣之處
Silverlight原名叫作WPF/E(WPF/Everywhere), 我的以爲原名很拽。經過名字就能夠知道SL和WPF遵循相同的編程模型和大部分空間,能夠理解爲SL是WPF的一個瀏覽器特殊版本。
核心區別:
1. WPF只運行在WIndows平臺
2. WPF須要.NET Framework
3. SL是WPF控件的一個子集
4. SL使用了.NET FRAMEWORK和CLR的子集
WPF獨有:
1. 支持流文件 Flow document
2. 支持動態資源 Dynamic resources
3. Merged dictionaries(SL3已有)
4. 重置樣式到一個新的FrameworkElement
5. Style繼承(SL4已有)
6. 隱式樣式TargetType屬性(SL5已有)
7. Styles, ControlTemplates, DataTemplate的Triggers
8. Routed commands
9. 自定義標記擴展(Custom markup extensions)(SL5已有)
10. 運行時訪問的可視化和邏輯樹(Visual Tree 已有 SLSPY工具 也能夠看到)
11. 一些WPF獨享的控件(AccessText, BulletChrome, ButtonChrome, ContextMenu, Decorator, DocumentPageView, DocumentViewer, GridViewColumnHeader, GridViewRowPresenter, GroupBox, GroupItem, InkCanvas, Menu, MenuItem, PageContent, Ribbon, Separator, StatusBar, TickBar, ToolBar, Track, UniformGrid)
SL獨有:
1. 深度縮放(Deep Zoom)
2. 一些SL獨享控件( AutoCompleteBox, DataPager, DescriptionViewer, HyperlinkButton, MultiScaleImage, NumericUpDown, ValidationSummary)
更新後續15-21,敬請期待。