2010-05-05 16 views
9

記住CannibalSmith曾經說過的一切 - 「所有的答案都是這樣說的:」WPF不同「,這是一個巨大的輕描淡寫,你不僅要學習很多新東西 - 你必須忘記你從Forms學到的所有東西。一種全新的UI製作方式。「什麼是開始使用WPF而不是WinForms的最佳讀物?

..並有多年的可視化Windows桌面應用程序開發經驗(VB6,Borland C++ Builder VCL,WinForms)(很難忘記),我如何快速轉向開發以形成格式良好的WPF應用程序與Visual Studio?

我不需要麻煩的圖形來給我的應用外觀和感覺好萊塢大片或一百萬美元的睡衣。我總是喜歡標準的Windows通用控件和UI設計指南的整潔,結束更多我在Vista玻璃Aero石墨醬享受他們。

我對WinForms非常滿意,但我希望我的應用程序能夠根據當今和未來最高效和靈活的模式,利用基於接口的最高效和最新的標準技術和架構集成和功能重用,並採取現代硬件和API的所有優勢,以最大限度地提高性能,可用性,可靠性,可維護性,可擴展性等。我非常喜歡分離視圖,邏輯和數據的想法,讓視圖充分利用平臺的所有優勢(可以將它作爲瘦客戶端上的Web瀏覽器小程序運行,也可以作爲具有最新GPU的PC上的桌面應用程序運行),讓邏輯被重用,並行化並無縫地發展,將數據存儲在井結構中ed格式在正確的地方。

但是......從VB6移動到Borland C++ Builder非常容易(沒有書本/教程需要打開它並開始工作)(假設我已經知道C++),從BCB移動到WinForms是相同的無縫,對於我來說,WPF如何處理似乎並不明顯。

那麼我如何最好地將自己從一個WinForms開發者轉化爲一個正確的思維方式並從事WPF開發人員?

+1

+1不僅一個有趣的問題,而是一個非常良好的書面一個爲好。 – 2010-05-25 17:50:22

回答

2

請記住,MVVM似乎只適用於單窗口應用程序。 我根據缺乏經驗和一般建議,深入瞭解WPF,以便更好地配置一個自助服務終端項目,特別是客戶給我所有應用程序屏幕的photoshop圖像。擁有酷炫的圖形是這個項目的一個要求,我喜歡WPF與網頁開發的模糊相似。

我發現了一些缺點

1)有作爲正式MVVM工具包沒有這樣的事情。其中有很多,都由個人支持。一年前微軟的工具包被槍殺了,並且沒有VS2010的支持。 2)編程一個多窗口應用程序,排序簡單的嚮導,後退和前進,是一個簡單的噩夢。我用一種乾淨的設計擺脫了這種乾淨的設計,爲每個UI操作定義了一個委託,併爲每個業務操作指定了一個命令,但我仍然認爲這太過牽扯到框架的合理性,並且無法將測試結果顯示給這位顧客期待激動。

3)你放棄了雙擊按鈕並添加一些代碼的習慣。這留下了使用IDE反對其本質的嘮叨感。基本上,您使用Visual Studio作爲文本編輯器和界面設計器,仍然得到該工具的大力幫助。

有利的一面,到目前爲止有:

1)定義的可視化組件非常靈活,快速和容易的,你可以VS和Expression Blend之間進行選擇。動畫創建起來很簡單。

2)數據綁定簡化了應用程序。您可以定義一個DataContext並進行綁定,並且不必將數據從業務邏輯自己移動到接口,只要您擁有必須顯示的所有內容的屬性即可。

3)您可以將接口中的業務邏輯量減少到零。將應用程序行爲與其外觀分開很容易,因此您可以用十種不同方式輕鬆界定界面,並在不打開窗口的情況下測試所有邏輯。

4)如果他們問你,你可以打開Silverlight門。

我的結論是,如果你有一個MDI應用程序,你可能會發現自己有很大的麻煩。您應該意識到,如果您選擇WPF,那麼您將爲後代耕耘,而不是坐火車來讓您快速輕鬆地到達那裏。沒有確定的方式去做事情,特別是那些沒有被演示覆蓋的事情。

所有考慮的工具箱都不是那麼重要,它們每個都能很好地爲您服務。事實上,一對夫婦支持班級就足夠了,並且沒有奇特的巫師,這是由你遵循慣例。

一旦你理解了邏輯中涉及的內容,你甚至可以在幾小時內創建自己的。缺點是你必須真正理解它才能以自己的方式來彎​​曲應用程序。

正如我上面所說的,當他們點擊一個保持代碼清潔的按鈕時,我不得不學習很多東西來顯示一個新視圖。花點時間看看the videos cited elsewere on StackOverflow它會爲你節省時間。

1

已經在今年陷入WPF,對我來說最重要的是學習如何使用模型 - 視圖 - 視圖模型模式用於從應用程序邏輯中分離視圖。作爲一般的經驗法則,如果您發現您在代碼背後放置了大量代碼以用於您的視圖,那麼您「做錯了」。

我發現來自WinForms背景我正在把很多事件處理程序和做我的代碼背後的東西。當我熟悉MVVM和WPF功能時,我發現我能夠刪除大部分代碼,並將其替換爲視圖綁定到視圖模型。

正是這樣一個由約什 - 史密斯,幫助讓我開始了MVVM路徑上的文章:

http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx

一旦你開始得到顯示數據視圖MVVM綁定的竅門,看看在命令中,特別是在ICommand接口。它們是用戶觸發操作執行的主要機制。因此,您不必爲按鈕設置OnClick處理程序,而是將XAML中按鈕的Command屬性綁定到公開ICommand實現的視圖模型中的屬性。

我2C - 多諾萬

相關問題