2009-12-18 20 views
12

WPF versus Windows Forms有一個類似的問題,它有一些很好的信息,但以我的個人經驗,我沒有理由使用WPF而不是Winforms。 WPF最初有很多關於它的多線程功能的討論,但在使用中我沒有看到任何好處。爲什麼要在WinForms上使用WPF?任何WPF超越WinForms的例子?

我有兩個應用程序做同樣的事情,一個在WPF和Winforms中。 Winforms應用程序將WPF應用程序從性能(10倍)中解放出來,看起來也不錯。

授予我比WPF更精通Winforms應用程序。

+0

WPF> WinForms,因爲你可以把一個網頁瀏覽器放在一個按鈕! ;) – Qberticus 2009-12-18 02:57:41

+0

@Qberticus:不知道我遵循你的迴應。我可以輕鬆創建一個WebBrowserControl並處理'Click'事件。 – 2009-12-18 02:59:45

+0

QBerticus的含義是,WebBrowserControl將在按鈕控件的內部*在視覺和邏輯上(不能說爲什麼任何人會想要這樣做) – 2009-12-18 03:02:02

回答

15

有在這裏的主題討論另: When is Windows Forms the correct choice vs WPF?

的WinForms應用程序吹WPF應用 走在 性能方面(按10倍)和 看起來就像不錯。

WPF的不僅僅是漂亮的圖片更多... 我不是設計師,我到底有沒有顏色的感覺(到一個地步,我的未婚妻決定 我再也不能買我自己的衣服)但我喜歡WPF。 DataBinding支持的例子是驚人的 更不用說爲ListBox創建ItemTemplate是多麼容易(請記住覆蓋Windows Forms中的繪製方法只是爲了在ListBox項目中獲得2行文本和圖像?)

至於性能......根據我的經驗,只有在使用帶GPU的 Windows Vista/7時才能發現該改進。 (當然,你寫代碼的方式)。

也許這是微軟向市場推銷的一個錯誤,即WPF是關於粉紅色大象圖形的,而它的功能更多。 (他們在Silverlight 1的匆忙釋放 中犯了類似的錯誤,我認爲他們應該一起跳過)。

+5

+1當然,WPF的主要好處是您獲得了很大的靈活性,以及​​如何編寫更好的代碼,如Model-View-ViewModel模式。 – 2009-12-18 03:05:26

+3

同意Timothy和Martinho,這是關於建築。模板和數據綁定使用WPF是令人信服的理由:您可以做得更多,更容易,更可維護。並且肯定地認爲,微軟將WPF作爲一種創造傻按鈕設計的方式進行營銷是一個錯誤。這是所有*關於建築。 – itowlson 2009-12-18 03:16:36

0

WinForms和WPF都是很棒的框架,問題在於什麼最適合您的應用程序。如果你需要一個帶有動畫控件和非常易於理解的風格的流體GUI,或者只是創建一個非常圖形化的用戶界面,那麼WPF對於那種應用程序來說是非常好的。有時,WinForms可能會受到很大的限制,因爲控件是他們自己可以創建用戶控件來添加事物的東西,但如果您有一個非常具體的外觀,更改外觀可能會很困難。

一個很好的比較就是看WinForms應用程序和Silverlight應用程序之間的區別。 Silverlight和WPF共享一個通用框架,它將幫助您理解兩者之間的差異。

看看這個silverlight和wpf庫,你會看到一些可以在wpf環境中完成的事情。

的Silverlight庫:http://demos.telerik.com/silverlight/

WPF庫:http://demos.telerik.com/wpf/

1

與WPF最大的問題是,該工具集是瘸子,學習曲線是巨大的。到目前爲止,WPF的使用量非常低,主要是因爲我剛纔提到的問題。根據微軟WPF的未來,他們已經投入巨資。事實上,Visual Studio的下一個版本是用WPF編寫的(http://www.onedotnetway.com/writing-visual-studio-2010-shell-in-wpf-reflects-confidence/

但是,如果WPF將成爲主流,它仍然有待觀察。該框架非常棒,它可以做非常酷的東西,主要與眼睛糖果有關。微軟稱之爲用戶體驗,但用簡單的英語來說,它就是眼光。大多數應用程序不需要它。

+3

任何聲稱你可以在WPF中做的很酷的東西是*大多數*與eye-candy相關的是1)某人*已經*玩過WPF,但沒有*學習* WPF,2)一個用戶。 – 2009-12-18 03:23:55

2

與WPF一起使用的最大原因並不是看起來很棒。真正的收益來自可靠性,生產力,並允許藝術類型在不涉及工程師的情況下修改UI的外觀。

4

WPF

  1. 允許設計者/非程序員來提高UI的外觀,從代碼分開。設計師可以使用Expression Blend等工具大幅修改應用的外觀。
  2. 編寫WPF所需的知識幾乎完全可以用於編寫Silverlight代碼,因此您正在攀登兩種技術的學習曲線
  3. 由微軟積極推動,並且可能比WinForms更有前途。在WPF之前,WinForms將採用MFC的方式。
,另一方面

  1. 學習曲線比的WinForms
  2. 設計師的支持缺乏比較的WinForms較重的WPF,雖然這可能會在Visual Studio 2010中
  3. 電流變化趨勢是使用View-ViewModel-Model來構建應用程序:這是在WPF框架之上的進一步學習,但是如果您打算構建超出簡單UI的任何內容,則值得付出努力

如果性能(速度和資源需求)是用於Windows的良好UI平臺的標準,那麼獲勝者是本機Win32應用程序。您採用另一種技術來提供他們所提供的功能,並且最終WPF比WinForms提供更多功能。

+1

+1。有一點我沒有得到:你提到使用Blend來修改應用的外觀,然後你說設計師的支持是缺乏的。 – 2009-12-18 03:40:14

+0

設計器是Visual Studio的一部分,而Expression Blend是一個單獨的Microsoft產品。 – 2009-12-18 17:28:41