2009-01-31 41 views
6

我目前正在研究學習WPF和Silverlight。到目前爲止,我一直在Delphi和C#(Winforms)中開發。在查看一些關於WPF的書籍並在線觀看一些介紹性視頻時,我認爲這種XAML在效率和可用性(對開發人員而言)方面倒退了一步。特別是在在線視頻中,人們很高興地打造用於創建表單和控件的XAML代碼,我認爲這種技術很早以前就隨着視覺形式設計師的到來而變得過時了。爲什麼我想通過在XAML中輸入文本表示來創建按鈕或網格?使用表單設計器時速度如此之快?爲什麼要在屬性檢查器中從下拉列表中選擇顏色或字體名稱的速度更快?真正開發的應用程序GUI是由開發的 XAML?XAML - 打字的目的是什麼?

我相信我在這裏失去了一些東西,但我想不出什麼...

+1

我不確定是否真的有許多使用Silverlight和WPF的真實世界的應用程序。但是,從現在來看,大量的手工編碼XAML已經完成。這些工具並不是真的存在,但人們想要使用這種技術......所以這就是價格。 – BobbyShaftoe 2009-01-31 11:14:33

回答

10

我傾向於手動編寫我所有的XAML,因爲我還沒有熟練使用Blend。但是我使用Blend工作的其他一些開發人員喜歡使用Blend,這對設置漸變效果非常好。

我建議您下載Blend的試用版,並試用一下,如果您瞭解如何使用它,它可以很好地與Visual Studio配合使用,併爲您節省大量時間。

4

好,設計師傾向於使用Expression Blend中,這是一個強大的XAML設計。但是,是的,我知道很多開發人員將xaml編輯爲文本,並且比設計人員更容易找到。

3

如果您想使用設計器,然後獲得Expression Blend。

你是對的,雖然在VS中也應該有一些基本的設計師。

Silverlight雖然來自不同的方向,但典型的控件是Silverlight及其早期版本中最近的一件事。

話雖如此,作爲開發人員,我更喜歡用我喜歡鍵入HTML的方式來輸入XAML。設計師(混合也不例外)將太多超炫的東西倒入標記中,我寧願不在那裏。

27

與使用WYSIWYG編輯器相比,它與手動編寫原始HTML非常相似:對結果進行更精細的控制,而無需通過編輯器進行不必要的循環。

0

因爲它更好地進入版本控制系統,所以其他人可以同時更改它沒有衝突?因爲你可以在emacs中開發整個應用程序?因爲你可以輕鬆地爲這些東西編寫生成器和檢查器?因爲很容易控制這個GUI如何查看每個小細節?

12

通過鍵入XAML開發的真實應用程序GUI真的是 ?

總而言之,是的。也許不是很多,但它肯定會發生。

我對視覺設計師的經驗是,他們傾向於添加不必要的面板,固定尺寸和絕對定位,同時需要更靈活,適當縮放的佈局。例如,看看this recent question在計算器上

此外,如果您編寫自定義控件,您通常必須做額外的工作才能使它們與視覺設計師兼容,如果您能夠直接編輯xaml,則不需要額外工作。

2

XAML可以與Glade XML進行比較,Glade XML是一種用於存儲基於GTK +的GUI的格式。與Windows Forms不同,像WPF一樣,GTK +實際上是合理的,因爲它使用相對定位。對於Windows窗體,當人們開始自定義字體並且GUI看起來像大量文本剪裁的廢話時,絕對定位就變成了PITA。

與絕對定位不同,相對定位很容易手動編碼,因爲您不需要計算出座標!

3

一旦您瞭解瞭如何使用屬於WPF的不同面板結構,那麼手動編寫XAML確實比使用設計器更容易。我發現我可以比使用任何設計器更快地將控件輸入到窗體中,並且我可以更好地控制XAML的外觀和佈局。

我只使用設計器偶爾爲已經在窗體上的控件設置屬性。我使用Blend做動畫,因​​爲我還沒有XAML。

6

如果你能型XAML,那麼你瞭解 XAML :)(恕我直言)

知道如何鍵入它知道如何調試它,重構它,並重新組織的點。所有這些目前都不能在Expression Blend中完成,對於大型項目,您需要所有這些。

這裏提出的另一個問題是手動編寫XAML會給你更多的控制權,而不是像html一樣強大。 XAML比HTML和編輯器(比如表達式混合或其他)更加結構化,幾乎給出了您手動編寫的相同XAML,只有少數例外。

+1

+1類型It == Learn It! – Frozenskys 2010-08-17 08:02:28

0

我輸入它。我討厭的不過是設計師的草率,非確定性和難以控制的輸出,不管是HTML還是XAML。

基本上,如果我創建一個XAML文件,我完全按照我編寫其他每段代碼的方式來完成。

我首先將整個東西分割成一個網格,然後把一個確切的像素大小放在一切上(除了奇數「自由浮動」空間,我把「*」放在哪裏)決定什麼地方,然後我也添加註釋和空行來構建XAML。

此外,我拒絕每個不符合此標準的XAML作爲「不可用」,這具有非常好的教育效果。

最佳實踐的疏忽和疏忽是致命的罪過,我從來不會容忍它們。