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 是分隔符,感觉还是蛮实用的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值