WPF (Windows Presentation Foundation) 隨著 Microsoft .Net Framework 3.0 出現在這世界也已經好多年了,它擁有非常優秀的向量式圖形呈現引擎 (Vector-Based Rendering Engine)。對照於 User32 或 .Net Windows Forms 的開發方式而言,WPF 在建立提供更美好視覺效果與使用者經驗的 Windows 用戶端應用程式方面是佔有極大的優勢的。使用過任何一種以 XAML 為基礎開發應用程式的人應該都知道,XAML 在畫面排版配置、控制項修改組合的靈活度、資料繫結、動畫等等方面都要比使用 Windows Forms 來開發要容易地多 (你如果真的像我這麼堅持,用 GDI+ 從頭刻一個控制項就會知道那是一件多麼可怕的經歷),更遑論 User32 了
先說在前頭,這僅是個人最近的一些小想法,並非絕對的評論,僅是由某些最近所觀察事物的一些感想。
WPF (Windows Presentation Foundation) 隨著 Microsoft .Net Framework 3.0 出現在這世界也已經好多年了,它擁有非常優秀的向量式圖形呈現引擎 (Vector-Based Rendering Engine)。對照於 User32 或 .Net Windows Forms 的開發方式而言,WPF 在建立提供更美好視覺效果與使用者經驗的 Windows 用戶端應用程式方面是佔有極大的優勢的。使用過任何一種以 XAML 為基礎開發應用程式的人應該都知道,XAML 在畫面排版配置、控制項修改組合的靈活度、資料繫結、動畫等等方面都要比使用 Windows Forms 來開發要容易地多 (你如果真的像我這麼堅持,用 GDI+ 從頭刻一個控制項就會知道那是一件多麼可怕的經歷),更遑論 User32 了。
可是,為什麼依然還沒看到桌面系統的開發者大量使用 WPF ?.Net 的桌面應用系統開發者依然是以 Windows Forms 為主要的開發藍圖?甚至有一段時間當 Silverlight OOB 出現的時候,我也以為 WPF要壽終正寢了,不過結局是 Silverlight 5 就到頂了 (有點可惜, Silverlight 和 XNA 都是好東西),而 WPF 依然還存在,雖然似乎演進的腳步也緩了,不過我覺得是因為它一開始就很快速地將未來都產生了,以致於後來除了觸控之外還真沒什麼該加的東西了。
Windows Forms 有一個天生的優勢 -- 它非常容易上手,大部份寫給初學者看的書也都是使用 Windows Forms 做為範例,這應該是 Windows Forms 可以一直屹立不搖的最大原因。當我從 Windows Forms 跨入 XAML 世界的時候 (我接觸 XAML 的起點是 Windows Phone App),首先遭遇到的問題就是很難適應用 XAML 來設計畫面,於是當時只好取巧降低 XAML 的部份,把大多數的控制項都在 C# 中使用程式碼來產生;要從 Windows Forms 轉向 WPF 時,XAML 語法與 Code-Behind 將會是最早遇到的一道鴻溝,事實上使用 ASP.NET 寫 Web 系統的開發者恐怕比桌面應用系統的開發者來得易於適應 XAML + C# / Visual Basic 的開發方式。另一個比較難以適應的問題就是資料繫結,尤其當我們在閱讀許多人所寫的 WPF 程式時,會發現許多 MVVM 存在的蹤跡,而普遍看到的 Windows Forms 範例卻多半是以事件方式來反應資料的變化到視覺控制項上,甚至很多的範例是教你如何直接處理控制項上的值;一些明顯的例子就是 DataGridView 的處理,常會見到那種 DataGridView.Rows.Add 還是 DataGridView.Rows(i).Cells(j).Value 這種硬幹的搞法,習慣這樣寫程式的開發者面對使用大量資料繫結的 XAML 時會有一種茫然不知所措的感覺。
聽來那鴻溝是如此遙遠,而我卻又何以對 WPF 的未來深具信心?自 Windows Phone 出現的這兩三年來,學習使用 XAML 開發的人已經變多了,再加上 Windows Store App 也可以採用 XAML 來開發,這道黑水溝正逐漸地縮小當中。另外在這幾年的 App 的風潮裡,UX(使用者經驗) 已然成為一種顯學,各式各樣探討使用者經驗設計的文章與書籍如湧泉般源源流出,開發者們對於 UX 的重視度也開始提高,使用者們對於良好使用者經驗的意識也開始抬頭,而輕鬆就能做出具有良好使用者體驗這件事基本上就是 WPF 的強項。第三個原因則是觸控環境將會更為普及,在未來開發者勢必要面臨到操作介面必須適用於觸控環境這件事,在手勢控制方面, WPF 也比 Windows Forms 來得有優勢,這些都是讓我認為 WPF 終將獲得桌面應用程式開發者注目的原因。
不過,我並不認為 Windows Forms 會因此掛掉,它依然是初學者學習應用程式開發非常棒的樣版,仍然有存在於真實世界的價值,但身為桌面應用開發者的你似乎應該要準備學習 XAML 開發,而且學 XAML 可以一魚三吃 – WPF、Windows Phone App 與 Windows Store App,雖然它們之間的 XAML 會略有不同,但一魚三吃 真的很划得來,開始進入 XAML 的世界吧。