2009-01-27 22 views
1

我知道在WPF中,您希望控件的大小盡可能靈活,以便它們可以根據其上下文(如CSS中的內容)進行流動和擴展。XAML中硬編碼大小的最佳實踐

但是大部分的代碼示例我碰到過的硬編碼的大小,好像高峯在這個例子:

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="0.5*"/> 
    <ColumnDefinition Width="0.5*"/> 
</Grid.ColumnDefinitions> 
<Grid.RowDefinitions> 
    <RowDefinition Height="31"/> 
    <RowDefinition Height="31"/> 
    <RowDefinition Height="31"/> 
</Grid.RowDefinitions> 

是不是分配「31」的高度,以各行的不良做法應該不被模擬?或者有這個原因嗎?或者,作者是否可以在設計視圖中創建這些示例,而不是清理硬編碼的高度。

有沒有人有任何關於元素大小的最佳實踐(特別是關於使用*語法),從XAML開始的人可以從一開始就遵循開發好的習慣?

回答

1

一般來說,在XAML中使用動態尺寸是一種最佳實踐,因爲正如你所說WPF的概念與固定尺寸是獨立的。在你的特定例子中,我不知道是否需要從作者那裏獲得,請記住,還有一些涉及硬編碼值的情況(可能是自定義菜單欄或面板要保持其大小一致)。符號「2 *」表示該值將是其他列的值的兩倍,因此,在每列中使用星號不是非常有用。如果你正在尋找一些例子,我可以告訴你這些twosites(但如果你在谷歌上搜索「WPF star size」或類似的東西,你會找到其他人)。 另外,如果你正在尋找一本關於WPF的非常好的書,我一定可以將你指向Windows Presentation Foundation by Adam Nathan。這是我最喜歡的,它寫得很好,充滿了有色的例子,並涵蓋了WPF的每一個方面。

1

在大多數情況下,使用動態尺寸會更好,除非在Stefano指出的某些情況下。你應該記住,WPF是一項相當新的技術,很多人都在努力學習它。通常,當學習一種新技術時,人們首先要學習他們所知道的東西(例如,用C#編寫就像Java一樣),然後開始只有在瞭解了一點之後才用「正確」的方式編寫代碼。總是帶着一點鹽的博客文章。

但是,從您發佈的代碼中,我猜他們使用Blend來創建XAML。它總是做一些愚蠢的事情,比如增加行高和使兩列「0.5 *」。

0

有時您無法擺脫明確的大小調整,特別是當您使用設計器資產時,通常將其轉換爲像Expression Design這樣的工具中的大小路徑。當你想用一個明確的尺寸來設計一個控件,然後回過頭去像一個動態大小的對象一樣使用它時,你應該使用Viewbox。

在WPF中,在Viewbox中封裝一個大小的控件將負責動態執行轉換,以便它能夠正確縮放。這可能會帶來性能上的影響,但我不知道它比動態定義尺寸差多少。在Silverlight中,不存在Viewbox,但可以使用Silverlight Toolkit的原型Viewbox爲您提供相同的體驗。