Silverlight 佈局

原帖:http://www.cnblogs.com/shuhari/archive/2009/09/30/custom_silverlight_layout.html

 

Canvas:只支持絕對座標佈局使得Canvas在應用程序佈局方面純粹是個雞肋,要求稍微靈活一點的界面就派不上用場了。Flex也有一個Canvas,不過Flex Canvas支持左/中/右對齊,並且可以指定絕對寬度或相對寬度,所以Flex Canvas比Silverlight Canvas要好用得多,在各種界面佈局裏也是常見的選擇。

 

StackPanel:StackPanel不支持Grid的百分比佈局是很大的遺憾。很多時候,我只需要單行或單列布局,但控件則需要絕對/相對混合佈局,StackPanel不能提供這種靈活性。這使得我不得不使用語法更加羅嗦的Grid。

 

Grid:如果和GridSplitter聯合做多面板佈局的話,99%的情況下需要關心的無非是左右或上下兩個面板,而Grid和GridSplitter需要指定一大堆屬性才能正常工作,增加了無謂的負擔。

 

canvas就像畫布吧,stackpanel就像html裏面的div,grid就像html裏面的table,開始的時候不是很習慣,因爲方法上面有些區別,現在已經習慣了,畢竟grid比table更加直觀。這裏就只說說grid,佈局用得比較多。

 

<Grid>
    
<Grid.ColumnDefinitions>
        
<ColumnDefinition Width="200" />
        
<ColumnDefinition Width="6" />
        
<ColumnDefinition Width="*" />
    
</Grid.ColumnDefinitions>
    
<Grid Grid.Row="0" Grid.Column="0">
        
<Grid.RowDefinitions>
            
<RowDefinition Height="Auto" />
            
<RowDefinition Height="*" />
        
</Grid.RowDefinitions>
        
<Border>
            
<TextBlock Text="功能導航" />
        
</Border>
        
<ctrls:TreeView Grid.Row="1" />
    
</Grid>
    
<ctrls:GridSplitter Grid.Column="1" HorizontalAlignment="Center" 
                        VerticalAlignment
="Stretch"
                        Width
="6" />
    
<Grid Grid.Column="2">
        
<Grid.RowDefinitions>
            
<RowDefinition Height="Auto" />
            
<RowDefinition Height="*" />
        
</Grid.RowDefinitions>
        
<Border>
            
<TextBlock Text="" />
        
</Border>
    
</Grid>
</Grid>

 

使用 Grid.ColumnDefinitions 定義表格,接着在下面,對每個格進行設置, Grid.Row="0" Grid.Column="0"  如果在單元格里面再分,可以再使用gird,思路習慣就好。GridSplitter 是分隔符,感覺還是蠻實用的。

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