2010-09-22 76 views

回答

7

儘管對於Windows UI來說,兩者都可以實現類似的結果,但它們的功能與其目的是相互獨立的。

WinForms的嘗試是真實的,由於根源很強而不發展。這並不意味着WinForms已被棄用。這僅僅意味着WinForms的基礎類已經很完善並且很靈活。請記住通過Control類和深度工程UI消息傳遞(通過WinForms類公開的句柄)來擴展WinForms的靈活性。

然而,WPF是設計用戶界面的抽象層,不一定或完全是Windows用戶界面。跨越最困難的障礙是從基於座標的用戶界面(像素/位圖/索引)的想法轉變爲基於矢量的用戶界面,其中WPF可以適應幾乎任何尺寸控制或渲染平面。

WPF的好處是,您正在爲您的應用程序學習三個不同的目標 - Windows UI,SilverLight和現在的Windows Phone。 WinForms面向Windows用戶界面和Windows Mobile(CE)。基於常用小部件的乾淨UI在WinForms中具有適當的基礎。如果一個自定義的動態用戶界面是你的目標,那麼就讓WPF旋轉。

1

我會使用WPF,因爲它也可以讓你使用同樣的XAML標記做Silverlight應用程序。

話雖如此,有馬的課程,所以你需要爲任務選擇合適的工具。這確實意味着你需要知道雙方作出明智的決定。 :)

1

與WPF的學習曲線,絕對是陡峭得多 - 在同一時間,你馬上就能在Windows窗體中一些簡單的用戶界面,填寫關於ADO.net或SQL Server數據庫訪問您的需求。一旦將圖表/圖表添加到組合中,您將希望學習WPF。你

可能也想看看LightSwitch的,這需要一些使用Silverlight/WPF複雜的照顧。

1

雖然WPF是未來,它給了你這麼多的靈活性,我不建議完全切換到WPF。另外,如果您有一位能夠在設計部分工作的設計師,您將能夠充分利用WPF。我並不是說你需要一個設計師,但是根據我對WPF的經驗,如果你想開發一個殺手級的應用程序,你肯定需要知道WPF的位和字節。就像BrokenGlass所說的那樣,WPF的學習曲線太陡。所以,只需要逐步切換。如果您已經有一些Windows窗體應用程序,請嘗試重寫WPF中的一些應用程序。

+0

我覺得*太*陡有點太多了。 XAML/WPF確實需要學習很多東西,但我不會說這是不可逾越的:幾個月前,我幫助一個沒有以前的XAML經驗的團隊學習,然後推出Silverlight 4應用程序,這是一個滑坡次,但該項目完成了所有權利和團隊瞭解XAML :-) – 2010-09-22 01:19:08

1

那種東西你正在試圖做的可以同WinForms和WPF來完成。 WinForms是一個比較熟悉的範例,但是一般來說(大但是)XAML,特別是WPF並不是未來,但是當前在.NET中執行Windows UI的方式是,WinForms是過去它基本上處於維護模式現有的應用程序,我敢說新應用程序已經過時了)。是的,XAML的學習曲線有點陡峭,但你獲得的能力是值得的,除了XAML/WPF/Silverlight上有更多的資源(書籍,圖書館),而WinForms則有很多但是停滯不前(我沒有'在幾年內沒有看到任何新版本的WinForms書籍)。值得注意的一件事是XAML的數據綁定能力,它使不必要的許多代碼將數據從/傳送到對象/數據集到/從可視控件。

0

因爲你的主要目標是學習C#,所以你應該更專注於語言特性,而不是你的UI。你應該嘗試學習和使用C#的各種功能,以及它支持什麼和如何。學習(C#)將更多地用於開發應用程序的業務層和數據層,而不是您的UI;所以你應該首先集中精力建設這些圖層(使用任何表示框架)。

我不確定您是否有任何控制檯應用程序,WinForms,WPF或ASP.net的任何經驗,但爲了學習目的,您應該選擇一個最適合您的應用程序。如果你開始新鮮的話,我會建議你先從WinForms開始,因爲你將在WinForms中編寫很多C#代碼,然後在WPF中編寫代碼,然後再選擇WPF。

我的回答是完全專注於事實,你的首要目標是學習C#,而不是其UI框架更好等

0

WPF和XAML是一個學習曲線,但我的經驗是可以建立更加強大,簡潔,並在更短的時間內支持應用程序。可以將XAML從一個頁面複製並粘貼到另一個頁面。在Windows窗體上,我放棄了從一個頁面(表單)到另一個頁面的UI元素的複製和過去,因爲它太多次地鎖定了整個應用程序。雙向數據綁定是一個夢想。 WPF UI具有更商業級的外觀。可移植性到Silverlight。對我而言,這是我從C++中獲得的一小部分努力的98%。

+1

誰不喜歡我的答案?我是一個生活的開發者。我沒有說明任何絕對 - 只是我的意見。是什麼給了否定? – Paparazzi 2011-06-30 01:32:19