栈式面板:StackPanel就是将控件按照行或列来顺序排列,但不会换行。
通过设置面板的Orientation属性设置了两种排列方式:横排(Horizontal默认的)和竖排(Vertical)。
默认情况下垂直排序,水平排列时,每个元素都与面板一样高;垂直排列时,每个元素都与面板一样宽。如果包含的元素超过了面板空间,它只会截断多出的内容 元素的Margin属性用于使元素之间产生一定得间隔,当元素空间大于其内容的空间时,剩余空间将由HorizontalAlignment和 VerticalAlignment属性来填补。
特点:
1、 每个元素各占一行或者一列 使用场合:
2、 同类元素需要紧凑排列(如制作菜单和列表)。
3、 移除其中的元素后能够自动补缺的布局或者动画。
StackPanel 适合水平或者垂直方向的布局,在上面的例子中我们大量的使用该种布局方式。适合局部区域的布局,比如菜单栏,我们来使用 StackPanel来进行布局
运行效果如下:
对于水平或者垂直方向要求进行布局的,我们都可以采用StackPanel来进行布局。下面我们来看看横向布局的例子: 我们通过表格中的使用对StackPanel的停靠定位,进而通过Stackpanel对内部的子控件的停靠方向设置,例子如下
StackPanel在父容器中是右对齐的。 然后再StackPanel容器中,如果也采用内容右对齐,会有什么效果呢?
设置子控件的停靠方式时,不会起到任何作用,默认情况下,Stack的水平布局时,从左至右。
修改了FlowDirection设置了StackPanel的方向后,所有的子控件,都是从右向左方向进行绘制和显示,效果如下:
所以对于StackPanel我们基本上是用上述的属性和对StackPanel的停靠方式进行设置后,即可满足布局的要求