×

Discussion Board

Results 1 to 2 of 2
  1. #1
    Registered User
    Join Date
    Jan 2013
    Posts
    32

    Grid、StackPanel及Canvas比较学习

    1. Alignment是否起作用
    Grid中Child设置HorizontalAlignment和VerticalAlignment都是起作用的;
    StackPanel中,如果子控件是Vertical排列的(即StackPanel的Orientation设置为Vertical),那么子控件只有HorizontalAlignment起作用;
    Canvas的HorizontalAlignment和VerticalAlignment都是不起作用的。
    2. 控件所占位置大小
    一般父控件会调用子控件的MeasureOverride来确定控件需要占用的空间。
    Grid中所有子控件中最大的,就是Grid需要占用的空间,因为单一Grid中子控件默认都是以左上角为原点重叠排列的,除非改变Alignment;
    StackPanel中,控件是顺序排列的,所以StackPanel在一个方向取所有子控件的大小之和,另一个方向取最大值;
    Canvas最特殊,它占用的空间为0,即Canvas的MeasureOverride返回值为0。
    我们通过一个直观的例子来说明Canvas的MeasureOverride的确是返回0的。
    示例代码如下:
    Code:
    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
         <StackPanel>
             <Canvas>
                 <Ellipse Width="200" Height="200" Stroke="Green" StrokeThickness="10"/>
             </Canvas>
             <TextBlock>HelloWorld</TextBlock>
         </StackPanel>
     </Grid>
    我们知道StackPanel中控件默认是Vertical排列的,按理说Ellipse和TextBlock是应该按顺序排列的。
    但是由于Canvas返回值是0,所以排列的时候TextBlock就也排到左上角去了。
    效果如图:
    http://www.devdiv.com/data/attachmen...fs9x6figf9.png
    3. 安排控件位置
    Grid根据子控件大小、Alignment,自身Padding,子控件Margin等安排子控件位置
    StackPanel类似,只是如果子控件是Vertical顺序排列的,那么VerticalAlignment不起作用
    Canvas,按照绝对布局来安排子件位置
    安排子控件,在ArrangeOverride中实现

    Regards
    Vincent
    http://weibo.com/xueyw

  2. #2
    Registered User
    Join Date
    Jan 2013
    Posts
    32

    Re: Grid、StackPanel及Canvas比较学习

    真痛苦啊,怎么插入图片?或者上传附件?

Similar Threads

  1. Replies: 1
    Last Post: 2010-08-26, 11:08
  2. Grid....Plz help
    By symbee in forum Symbian User Interface
    Replies: 30
    Last Post: 2010-05-21, 08:04
  3. Redraw the grid so that the below grid becomes visible.
    By PritamS60 in forum Symbian User Interface
    Replies: 6
    Last Post: 2009-06-10, 13:37
  4. Need Help with grid here
    By gigglie in forum Symbian
    Replies: 8
    Last Post: 2008-01-01, 17:33

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
×