互聯力量Silverlight Grid控件常見用法

在Silverlight中最強大的佈局容器就是Grid,本篇將重點描述Silverlight Grid控件,你如果對Silverlight 佈局控件概念不瞭解,可以參考互聯力量Silverlight教程相關內容Silverlight WrapPanel和DockPanel用法

你瞭解HTML的Table嗎,Grid就是Silverlight的“Table”,也是由行和列組成,默認不顯示的,用來佈局控件的容器。使用Grid其實只要兩步:第一步,定出Grid結構,由幾行幾列來完成佈局,第二步,把控件放在Gird合適的單元格上。具體的方法是用 Grid.ColumnDefinitions定義列集合,用 Grid.RowDefinitions 定義行集合,比如:下面的例子,定義兩行三列,如下:

互聯力量-.net silverlight-跟互聯力量學Silverlight之九_Silverlight Grid控件常見用法-圖1

圖1

互聯力量-.net silverlight-跟互聯力量學Silverlight之九_Silverlight Grid控件常見用法-圖2

圖2

asp.net教程

接着可以把子控件排列到Grid裏面,如把四個Button,排列成“Z”字形,方法是在控件上用Grid.Row屬性,確定要排在哪一行,Grid.Column屬性確定排在哪一列,首行首列的索引是0,如下:

互聯力量-.net silverlight-跟互聯力量學Silverlight之九_Silverlight Grid控件常見用法-圖3

圖3

互聯力量-.net silverlight-跟互聯力量學Silverlight之九_Silverlight Grid控件常見用法-圖4

圖4

看到這,Grid控件的佈局還是很容易的,但是有個問題,Grid單元格的大小總是默認平均分配,如果想設置不同大小的單元格,該怎麼辦?下面給大家說說,調整Grid大小的三種方式:

方式一:絕對大小:直接設置width或height屬性改變大小,以像素爲單位。寫法是:<ColumnDefinition ;</ColumnDefinition>

方式二:自動大小:根據單元格里面的控件內容,自動分配大小,寫法是:<ColumnDefinition ;</ColumnDefinition>

方式三:比例大小:按比例縮放大小。寫法是:<ColumnDefinition ;</ColumnDefinition>如果想要第二列是第一列的2倍寬度,這樣寫:<ColumnDefinition Width=”2*”></ColumnDefinition>

下面,我在以稍複雜的例子,綜合描述Grid控件的佈局用法。我們通常在windows窗體程序中使用對話框,在Silverlight中,如何製作類似的對話框呢?分析,對話框有兩個按鈕,OK和Cancel,有提示文本,爲了美觀,按鈕和文本分在兩行顯示,之間用分隔線劃開。爲實現這個構圖,先用Grid分爲兩行,根據Grid大小三種調整策略,button所在行的高度,應該由button的大小自動分配,剩下的高度,按比例分給文本所在行,Grid行佈局如下:

互聯力量-.net silverlight-跟互聯力量學Silverlight之九_Silverlight Grid控件常見用法-圖5

圖5

asp.net源碼

文本提示用TextBlock控件,放在第一行位置顯示,如下:

<TextBlock Grid.Row=”0″ … Text=”This is simply a test of nested containers.”/>

接下來,按鈕顯示在第二行,你考慮過嗎,按鈕有兩個,要並排顯示在同一行,這時應該怎樣寫,對了,我在StackPanel控件和佈局屬性用法中提到StackPanel的用法,它可以實現水平方向的順序佈局,這樣我在Grid裏面嵌套StackPanel,把StackPanel放在Grid的第二行,button放在StackPanel右向水平佈局,從而實現效果,完整代碼如下:

互聯力量-.net silverlight-跟互聯力量學Silverlight之九_Silverlight Grid控件常見用法-圖6

圖6

互聯力量-.net silverlight-跟互聯力量學Silverlight之九_Silverlight Grid控件常見用法-圖7

圖7

這裏強調一點,Silverlight的Grid佈局在概念上類似HTML的Table佈局,所以你也可以用完全的Grid佈局,比如寫成兩行三列,然後把第一行合併單元格(用Grid.ColumnSpan=”3″),也可以實現上面的佈局效果,但是我個人偏向用多種佈局控件嵌套,這樣清爽許多(你想想html裏面div是不是比table簡潔)。

順便說個VS2010的技巧,XAML標記很多的時候,查找某個元素很麻煩,你可以打開菜單“視圖”,“其它窗口”,“文檔大綱”,你會發現所用的標記都以Tree的方式呈現,很直觀,方便選取和修改,本例的文檔大綱如圖:

互聯力量-.net silverlight-跟互聯力量學Silverlight之九_Silverlight Grid控件常見用法-圖8

圖8

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章