2.2 StackPanel面板布局
StackPanel面板也称为堆栈面板,也是一种十分常用的布局面板。StackPanel面板中可以放置多个子元素,这些子元素虽然在同一面板中,但是相互之间不会重叠,会按顺序进行排列。
多个子元素在StackPanel面板中的排列方向有垂直和水平两种。StackPanel中子元素排列方向取决于StackPanel的属性Orentation的设置值。对应值及含义如下:
- Vertical。Vertical是默认值,表示StackPanel面板中的元素以垂直方向排列。
- Horizontal。表示以水平方向排列面板内的元素。
如图2-8所示,分别表示垂直和水平排列。
图2-8 StackPanel面板中元素的排列方向
子元素在StackPanel面板中的排列顺序取决于属性FlowDirection,FlowDirection的取值有LeftToRight和RightToLeft两种。含义如下:
- LeftToRight。表示StackPanel中子元素,按从左向右的顺序排列。
- RightToLeft。表示StackPanel中子元素,按从右向左的顺序排列。
如图2-9所示分别是两种不同的排列顺序。
图2-9 StackPanel通过FlowDirection设置子元素的排列顺序
提示:
FlowDirection属性只在Orentation设置为Horizontal时有效,在Orentation取值为Vertical时不起作用。
StackPanel面板的排列方向和顺序也可以使用程序代码进行设置。如图2-10所示,单击“ChangOrientation”按钮可以调整排列方向,单击“ChangFlowDirection”按钮可以调整排列顺序,单击“AddNew”按钮可以添加一个新按钮到StackPanel面板的末尾和插入一个新按钮到第三行。
图2-10 使用程序代码设置StackPanel面板
详细代码如下。
VBnet代码:StackPanel3.xaml.vb
Private Sub ChangOrientation_Click(sender As System.Object,e As System.Windows._RoutedEventArgs)Handles ChangOrientation.Click If Me.StackPanel0.Orientation=Controls.Orientation.Vertical Then Me.StackPanel0.Orientation=Controls.Orientation.Horizontal Else Me.StackPanel0.Orientation=Controls.Orientation.Vertical End If End Sub Private Sub ChangFlowDirection_Click(sender As System.Object,e As System.Windows._RoutedEventArgs)Handles ChangFlowDirection.Click If Me.StackPanel0.FlowDirection=Windows.FlowDirection.LeftToRight Then Me.StackPanel0.FlowDirection=Windows.FlowDirection.RightToLeft Else Me.StackPanel0.FlowDirection=Windows.FlowDirection.LeftToRight End If End Sub Private Sub Addnew_Click(sender As System.Object,e As System.Windows._RoutedEventArgs)Handles Addnew.Click Dim buttonnew As Button=New Button buttonnew.Content="新增的按钮" Me.StackPanel0.Children.Add(buttonnew)'新增按钮,添加在末尾 buttonnew=New Button buttonnew.Content="插入的按钮" Me.StackPanel0.Children.Insert(2,buttonnew)'插入的按钮,添加在第三个 End Sub