WPF教程(二) WPF vs WinForms

在前面的章節,我們討論了WPF是什麼,還涉及了一點點WinForms。在本章節,我將嘗試比較兩者,儘管它們服務的目的一樣,卻存在很多的區別。如果你以前從來沒有接觸過WinForms,或者WPF是你學習的第一種GUI框架,請跳過這一章節。但是如果你有興趣的話,不妨嘗試一讀。

先說說兩者最重要的區別。WinForms只是標準窗體控件頂部的一層(如文本框),而WPF從零開始,幾乎在所有場景下都不依賴於標準窗體控件。這個區別看起來似乎微不足道,但是如果你之前有用過依賴於Win32/WinAPI框架的話,你一定不會這麼認爲。

舉一個很好的栗子,現在有一個帶圖片和文字的按鈕。它並不是一個標準窗體控件,WinForms無法提供現成的,你不得不自己畫圖片,實現支持圖像的按鈕,或使用第三方控件。相反,在WPF,按鈕可以包含任何東西,因爲它本質上是一個帶內容和不同狀態的邊框。WPF的按鈕就好像是一個看不見的物體,可以放入各種其他控件到裏面,不部分WPF控件都是如此。你是想要一個帶圖片和文字的按鈕?很簡單,只要把一張圖片和一個文本塊放到按鈕裏面就搞定了。在標準WinForms控件之外好像你找不到這種靈巧的方式,這就是爲什麼像帶圖片的按鈕這種簡單的控件實現會有如此大市場的原因。

這種靈活性的缺點是你必須付出更大的努力去實現某個東西,而在WinForms卻是非常容易的。因爲它只是在你所使用的場景下創建的,無法通用。至少在最開始的時候是這種感覺,你創建了一個模塊,建立了一個帶圖片和一些對齊文字的ListView,這個時候你發現這個在WinForm ListViewItem只是一行代碼的事。

這僅僅是一個區別而已,當你在使用WPF時,你會發現其實在其他區別上,這些背後的原因是一樣的:WPF只用自己的方式來處理事情,要麼更好要麼更差。你不再被Windows方式所約束,但是,得到這種靈活性的代價是,你需要付出更多的努力。

下面的表完整列出了WPF和WinForms的優勢,它能讓你更多的理解你要進入的領域。

WPF優勢

1.比較新,從而更符合目前的標準。

2.微軟正在使用它開發很多新應用,比如Visual Studio。

3.更靈活,你不必再去自己寫控件或者買控件。

4.你所使用的第三方控件更多的聚焦在WPF上,因爲它比較新。

5.XAML使得GUI的創建和編輯更加容易,而且允許拆分設計器(XAML)和代碼器(C#, VB.NET).

6.數據綁定,你可以更加徹底的分離數據和佈局.

7.用硬件加速繪製圖形用戶界面,性能更好。

8.允許你在Windows應用和web應用之間進行用戶交互。

WinForms優勢

1.出現比較久,已經經歷很多檢驗和測試。

2.已經有很多第三方控件供你購買或者免費使用。

3.Visual Studio設計器仍然更適合WinForms,在WPF很多東西你還是需要自己去開發。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章