2009-02-26 13 views
40

我一直在看WPF,但我從來沒有真正在其中工作(除了15分鐘,這引發了這個問題)。我看着這個post,但它確實是關於WPF的「Flash」。那麼Windows窗體應用程序和WPF應用程序有什麼區別?什麼是WPF,它與WinForms相比如何?

+5

我發現這對我很有用[clear-code.blogspot.com/2012/04/what-is-wpf。html](http://clear-code.blogspot.com/2012/04/what-is-wpf.html) – 2012-04-23 19:45:33

回答

54

WPF是一個基於矢量圖形的UI表示層,其中WinForms不是。爲什麼這很重要/有趣?通過基於矢量,它允許表示層順利地將UI元素縮放到任意大小而不失真。

WPF也是一個可組合的演示系統,這意味着幾乎任何UI元素都可以由任何其他UI元素組成。這使您可以從簡單的UI元素輕鬆構建複雜的UI元素。

WPF也完全是數據綁定感知的,這意味着您可以將UI元素的任何屬性綁定到.NET對象(或對象的屬性/方法),另一個UI元素的屬性或數據。是的,WinForms支持數據綁定,但方式更爲有限。最後,WPF是「skinable」或「themeable」的,這意味着作爲一個開發者,你可以使用一個列表框,因爲這些是你需要的行爲,但是有人可以「皮膚」它看起來像完全不同的東西。

想象一下圖像列表框。你想要的內容實際上是圖像,但你仍然希望列表框的行爲。這在WPF中通過簡單地使用列表框並將內容表示更改爲包含圖像而不是文本來完成。

+0

我很確定,在WinForm中,你幾乎可以將任何屬性綁定到任何東西。這就是爲什麼DataBindings.Add()需要字符串,對象,字符串。所以它可以使用反射來將屬性綁定在一起。 – Quibblesome 2009-02-26 01:07:34

+0

Silverlight使用WPF的XAML功能的一個子集,因此瞭解如何對基於WPF的應用程序進行編程使得Silverlight小應用程序非常容易。 – 2009-02-26 01:10:06

9

要回答你的問題,WPF應用程序的Windows應用程序。 WPF是Microsoft的新框架(實際上,它是.NET框架3.0的一個子系統),用於編寫豐富的Windows應用程序。它意味着最終替代WinForms(儘管毫無疑問,採用率比MS希望的要慢得多)。

17

查看此問題的一個好方法可能首先詢問Winforms究竟是什麼。

Winforms和WPF都是爲使應用程序的UI層更易於編寫而設計的框架。這裏的老人們可能會談論如何編寫「Hello,World」的windows版本可能需要4頁左右的代碼。此外,當時岩石比較柔和,因此在編碼時我們必須與巨型蜥蜴戰鬥。 Winforms庫和設計器承擔了許多常見任務,並且使它們更易於編寫。

WPF做同樣的事情,但意識到這些常見的任務現在可能包括更多視覺上有趣的事情,除了包括許多WinForms不一定被認爲是UI層的一部分的東西。 WPF支持命令,觸發器和數據綁定的方式都是該框架的重要組成部分,但其核心原因與Winforms原先存在的核心原因相同。

WPF的改進在於,它不是讓您選擇從頭開始編寫完全自定義的控件,還是強制您使用具有有限自定義功能的一組控件,現在可以將控件的功能從它的外觀。描述我們的控件在XAML中的外觀以及與控件在代碼中的工作方式相分離的能力與Web程序員習慣使用的HTML /代碼模型非常相似。

一個好的WPF應用程序遵循Winforms應用程序的相同模型;儘可能地在UI層中保留儘可能多的東西。應用程序和數據層的核心邏輯應該是相同的,但是現在有更簡單的方法可以讓視覺效果更加令人印象深刻,這可能就是爲什麼你看到的大多數信息都涉及到更加流暢的視覺材料。如果你想學習WPF,你可以開始使用它,幾乎和Winforms一樣,然後在你掌握它們時重構其他功能。作爲一個很好的例子,我強烈推薦Scott Hanselman關於BabySmash開發的一系列博客帖子,which start here。這是對代碼和思想過程的很好的演練。這裏

3

開始,有數十座視頻:http://www.windowsclient.net/learn

在這種情況下,營銷schpiel是相當不錯的:

**「Windows窗體是在.NET Framework中的一個組類通過強大的,可擴展的用於用戶界面控件和圖形的庫,可以快速開發豐富的Windows客戶端應用程序。可以通過.NET 3.5 Framework中的WPF-Windows Forms互操作性將WPF合併到Windows窗體應用程序中。「*

*「WPF,Microsoft .NET Framewor的一個組件k 3.5,使您能夠構建下一代Windows用戶體驗。 WPF支持UI,媒體,文檔,硬件加速,矢量圖形,對不同外形尺寸的可擴展性,交互式數據可視化以及出衆的內容可讀性。「** WPF獲得WAY更好的圖形支持,方式更加強大和靈活數據綁定(如果你使用數據,使用WPF)

3

WPF代表W¯¯ INDOWS P resentation ˚F oundation。雖然WinForms的技術依賴於GDI/GDI +,WPF是直接建立在頂部DirectX,這意味着你可以在WinForms上做更多的事情,同時還可以繼續使用.NET Framework類庫。界面,2D/3D遊戲,演示等等。 WPF很像Flash(swf)電影,沒有元素「Movie」。 WPF基於.NET,可用於構建富客戶端Web支持的應用程序。

1
  1. WPF本質上是一個用於爲Windows平臺創建圖形用戶界面的新API。
  2. WPF不僅僅是構建Windows客戶端應用程序以及令人驚歎的用戶界面的下一代演示系統。
  3. WPF建立在DirectX(Direct3D)之上,而不是依賴於舊的GDI/GDI +子系統。
  4. WPF是一種基於矢量圖形的用戶界面表示層,它是基於矢量的,它允許表示層順利地將UI元素縮放到任意大小而不失真。
  5. WPF是「皮膚能」和「主題能」。這意味着WPF允許更改任何UI控件的外觀和感覺。
0

從實現的角度來看,主要的區別之一是WPF使用嚴格實施的模型 - 視圖 - 視圖模型MV-VM架構,視圖使用自定義標記語言XAML定義,視圖模型是類具有可訪問的屬性,並且該模型有效地作爲數據訪問層。相比之下,WinForms沒有這樣明確的分離 - 儘管按照慣例,不同的方面可能會被分組到不同的C#文件中,其全部仍然是代碼。實際上,這使得WPF開發更像Web DOM開發,WPF框架在後臺運行並進行調解。

相關問題