• 3、WPF学习之-布局


    一、基础知识

    1、所有WPF布局容器都派生自System.Windows.Controls.Panel抽象类的面板;

    2、WPF种核心布局面板有StackPanel(栈面板)、WrapPanel(环绕面板)、DockPanel(停靠面板)、Grid(网格面板)、UniformGrid(均匀面板)、Canvas(画布)

    二、实例

    1、StackPanel(栈面板):特点是在水平或垂直的堆栈中放置元素,每个元素各占一行或者一列,这个布局容器通常用于大的、复杂的窗口中的一些小区域

    默认情况下,StackPanel面板自上而下的顺序排列元素,使每个元素的高度适合它的内容

    1.1垂直布局

    <Grid>
            <StackPanel>
                <Button Name="btn1" Content="Button1" />
                <Button Name="btn2" Content="Button2" />
                <TextBox Name="txtDemo" Background="Red" />
                <CheckBox Name="cbDemo" Content="" />
                <RadioButton Name="rbMan"
                             Content=""
                             GroupName="rbSex" />
                <RadioButton Name="rbWomen"
                             Content=""
                             GroupName="rbSex" />
            </StackPanel>
     </Grid>

    1.2水平布局

    <StackPanel Orientation="Horizontal">

    2、WrapPanel(环绕面板):WrapPanel面板在可能的空间中,以一次一行或一列的方式布局控件,在水平方向上,WrapPanel面板从左向右放置条目,然后在随后的行中放置元素,在垂直方向上,WrapPanel面板自上而下的列种放置元素,并使用附加的列放置剩余的条目。

    通过Orientation属性来设置

    <WrapPanel Orientation="Vertical">
              <Button Name="btn1" Content="btn1" Margin="4"/>
              <Button Name="btn2" Content="btn2" Margin="4"/>
              <Button Name="btn3" Content="btn3" Margin="4"/>
              <Button Name="btn4" Content="btn4" Margin="4"/>
              <Button Name="btn5" Content="btn5" Margin="4"/>
    </WrapPanel>

    3、DockPanel(停靠面板):根据容器的整个边界调整元素,默认情况下后添加的元素只能使用剩余的空间,最后一个元素可以占据所有剩余空间

    <Grid>
            <DockPanel LastChildFill="false">
                <Button Name="btn1"
                        Content="Dock.Top"
                        DockPanel.Dock="Top" />
                <Button Name="btn2"
                        Content="Dock.Left"
                        DockPanel.Dock="Left" />
                <Button Name="btn3"
                        Content="Dock.Right"
                        DockPanel.Dock="Right" />
                <Button Name="btn4"
                        Content="Dock.Bottom"
                        DockPanel.Dock="Bottom" />
                <Button Name="btn5" Content="Dock" />
            </DockPanel>
     </Grid>

    默认情况下最后一个元素填充剩余空间

    4、Grid面板:通过使用对象填充Grid.RowDefinitions和Grid.ColumnDefinations集合来创建网格和行 可以用ShowGridLines="True"来显示网格

    <Grid>
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <Button Name="btn1"
                    Grid.Row="0"
                    Grid.Column="0"
                    Content="第一行第一列" />
            <Button Name="btn2"
                    Grid.Row="0"
                    Grid.Column="1"
                    Grid.ColumnSpan="2"
                    Background="Green"
                    Content="第一行第二、三列" />
            <Button Name="btn3"
                    Grid.Row="1"
                    Grid.RowSpan="2"
                    Grid.Column="0"
                    Background="Gray"
                    Content="第二、三行第一列" />
            <Grid Grid.Row="1"
                  Grid.Column="1"
                  ShowGridLines="True">
                <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>
                <TextBox Name="txtDemo"
                         Grid.Row="1"
                         Grid.Column="1"
                         Background="Azure"/>
            </Grid>
        </Grid>
    View Code

    三、混合实例

     3.1类似连连看布局

    源码下载:布局连连看.zip

    3.2中国八大名菜系列布局

     源码下载:PanelDemo.zip

  • 相关阅读:
    P2176 [USACO14FEB]路障Roadblock
    【最短路】Dijkstra+ 链式前向星+ 堆优化(优先队列)
    图论其一:图的存储
    【计算几何】二维凸包——Graham's Scan法
    P2742 【模板】二维凸包 / [USACO5.1]圈奶牛Fencing the Cows
    P2639 [USACO09OCT]Bessie的体重问题 【背包问题】
    如何评价代码质量的高低
    乔新亮-衡量企业 IT 团队价值的唯一指标是什么
    我总结了平台的5道坎
    hadoop namenode的工作机制
  • 原文地址:https://www.cnblogs.com/chenyongblog/p/3371013.html
Copyright © 2020-2023  润新知