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结合起来,灵活运用。

posted @ 2020-08-13 14:52  Ramos6  阅读(1090)  评论(0编辑  收藏  举报