剛開始看,正看到第三章Layout,真搞不懂WPF一直強調的設計UI的那些改變真的是好事嗎?
首先,有多少開發人員真的關心一個視窗改變大小帶來的影響呢?開發人員完全可以將主表單設為預設最大化,所有功能都用不能調整大小的快顯視窗,或者Dock在一個固定大小的Panel裡面。使用者調整主視窗大小?吃飽了撐的啊,能幹事就行,沒事調整大小幹嘛。 自己要調整大小,就別怪大小改變導致介面變形不規則什麼的(何況Winform調整視窗大小隻要不過分也不會有多難看的效果)。Winform做出來的應用程式又不是讓使用者當遊戲一樣玩的。
再說不同顯示器和解析度的影響。.NET出現的時候,大概流行的顯示器還是15寸的。後來顯示器一直在發展,Winform應用程式也在不斷地被部署到客戶那裡。有多少客戶會抱怨說,因為顯示器換了更好的,導致以前你們給開發的應用程式不好用了,需要更新程式?我孤陋寡聞,沒聽過。
這是沒事找事做的無用功,再說說做的反向功。
我剛開始看WPF,也許這個問題不像我想象的那麼麻煩。但就我目前的理解,控制項的位置和大小都用固定像素和固定座標來表示是很直觀,很簡單,很好理解和維護的方式,為什麼要求使用者都接受流方式的布局呢?我個人喜好CS多於BS就是因為不想花太多心思在網頁的布局上面。div+css真的不是我喜歡乾的事情,不知道什麼時候需要clear both,不知道什麼時候用float,什麼時候用relative position,一想起這些我就頭大。相反,Winform的布局真的是所見即所得 (WYSIWYG)。我可以非常輕鬆地做到把四個TextBox放在一個GroupBox裡面,讓它們在一條橫線上,中間等距離寬,看起來不說很漂亮,至少簡潔大方,使用者也能夠輕鬆地理解。WPF?好嘛,先得想想是用StackPanel,WrapPanel,還是Grid什麼的。拜託,我又沒有做表格,非讓我在Grid裡面設計幹嘛,即使它是不可見的。想想用Winform要顯示一個俱樂部客戶的詳細資料,拖一把基礎控制項顯示基本資料,加上幾個標籤,每個標籤顯示某個特定方面的資料,就完了。用WPF?先得想想一共需要多少個Container,哪些控制項放在哪個Container裡面,哪些Container又放在一個更大的Container裡面。如果需要對齊,還得想想用Margin,Alignment分別設定成什麼。累啊,也許熟練了之後不覺得累,但是一個是學習需要時間,更重要的是我為什麼要去花時間學習,理解,練習,然後掌握一個跟我核心工作不相關的事情呢?
開發人員的重點應該放在系統架構上,想想怎麼設計項目結構,有幾個Project,每個是幹什麼用的。類的層次是怎麼樣的,哪些類用抽象的,哪些要定義介面,等等。
有多少CS的項目是客戶強烈要求介面漂亮到覺得自己幹不了,只能去買商業第三方的漂亮控制項呢?第三方的控制項是漂亮了,我就遇到過由於使用Infragistics的控制項導致記憶體流失的問題。類似這種問題在控制項開發公司的論壇上一直就沒斷過。為了追求一點點的漂亮,給程式開發和維護造成很大的影響,真的值得嗎?
目前來說,我繼續學習WPF的目的可能是為了能在Winform中加入部分WPF控制項來局部美化介面吧。