WPF布局篇--Panel布局(二)
前言
本篇主要讲解WPF中,通过Panel进行界面布局,其中常用的Panel有:StackPanel、WrapPanel、DockPanel;
1.StackPanel 进行布局
特点:将StackPanel中的UI控件按照横向或者纵向堆叠排序,通过Orientation 属性设置元素的排列方向,横向(Horizontal)、纵向(Vertical);
StackPanel 设置纵向时,内部子控件宽度与StackPanel宽度一直,子控件自上往下堆叠;若不设置Orientation属性,则元素默认纵向排列;
界面效果:
StackPanel设置横向排列时,则其内部子元素的高度与StackPanel一致,并从左往右堆叠:
效果图:
2.WrapPanel 进行布局 (环绕布局)
特点:将内部控件从左往右或从上往下进行排列,当内部控件的宽度超过WrapPanel的宽度时,自动进行换行; 同样,可通过设置Orizatation来指定内部控件的排列方向,横向(Horizaiton) 、纵向(Vertical),不设置,则默认横向排列;
代码示例:
1 <WrapPanel x:Name="wrapPanel" Grid.Row="0" Grid.Column="0" Orientation="Horizontal" > 2 <local:TcpConnectUserControl HorizontalAlignment="Stretch" Width="{Binding ActualWidth, ElementName=wrapPanel, Mode=OneWay}" ></local:TcpConnectUserControl> 3 <Button Width="180" Height="70">test</Button> 4 <Button Width="180" Height="70">test</Button> 5 <Button Width="180" Height="70">test</Button> 6 </WrapPanel>
效果:
3.DockPanel 进行布局
特点: DockPanel有一个Dock附加属性,因此子元素用4个值来控制她们的停靠:Left、Top、Right、Bottom。Dock 没有Fill值。作为替代,最后的子元素将加入一个DockPanel并填满所有剩余的空间,除非DockPanel的LastChildFill属性为false,它将朝某个方向停靠。
代码示例:
1 <DockPanel Grid.ColumnSpan="2" Name="mainPanl" LastChildFill="True" Background="#FFF3E8E8"> 2 <DockPanel Grid.Row="0" Name="p1" DockPanel.Dock="Top" Background="Green" Height="30px" ></DockPanel> 3 <DockPanel Grid.Row="0" Grid.Column="0" Name="p2" DockPanel.Dock="Bottom" Background="Red" Height="150" ></DockPanel> 4 <DockPanel Grid.Column="0" Name="p3" DockPanel.Dock="Left" Background="Gray" LastChildFill="False" Width="{Binding ActualWidth, ConverterParameter=0.5, Converter={StaticResource MathConverter}, ElementName=mainPanl, Mode=OneWay, NotifyOnSourceUpdated=True, TargetNullValue=600}" /> 5 <DockPanel Grid.Column="1" Name="p4" LastChildFill="True" Background="Yellow"></DockPanel> 6 </DockPanel>
效果图:
布局时,通过将不同panel结合起来,灵活运用。