布局

    xiaoxiao2025-02-08  34

    布局

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    开发工具与关键技术:Visual Studio 2015

    作者:朱海恩

    撰写时间: 2019.05.18

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    XAML五个布局元素:

    一、Grid:网格。可以自定义行和列并通过行列的数量、行高列宽来调整控件的布局。

    特点:

    可以定义任意数量的行和列,非常灵活行的高度和列的宽度可以使用绝对值、相对比例或自动调整的方式进行精确设定,并可以设置最大和最小值内部元素可以设置自己所在的行和列,还可以设置自己纵向跨几行,横向跨几列可以设置Children元素的对齐方向

    Grid的适用场合有:

    UI布局的大框架设计大量UI元素需要成行或者成列对齐的情况UI尺寸改变的时候,元素需要保留固有的宽度和高度比例

    Row和Column分别是行和列,可以通过网格来把窗口分为几行几列,可以直接设置行Row的高和列Column的宽,也可以通过比例来设置。如果想在第一行第二列添加内容,可以通过Grid的属性(Grid.Row="0"Grid.Column="1")来获取,还有跨行和跨列的话,同样通过Grid的属性(Grid.RowSpan="2"Grid.ColumnSpan="1")来获取。

    <Grid>

            <!--三列-->

            <Grid.ColumnDefinitions>

                <ColumnDefinition Width="79*"/>

                <ColumnDefinition Width="101*"/>

                <ColumnDefinition Width="114*"/>

            </Grid.ColumnDefinitions>

            <!--四行-->

            <Grid.RowDefinitions>

                <RowDefinition Height="43*"/>

                <RowDefinition Height="57*"/>

                <RowDefinition Height="59*"/>

                <RowDefinition Height="111*"/>

            </Grid.RowDefinitions>

            <!--第一行、第三列-->

            <TextBlock Grid.Row="0" Grid.Column="2"></TextBlock>

            <!--第一行、行跨三列-->

            <TextBlock Grid.Row="0" Grid.ColumnSpan="3"></TextBlock>

    </Grid>

     

    DockPanel:泊靠式面板

    使用场合:DockPanel停靠容器,专门负责自适应窗口的布局。

    <DockPanel>

            <Button DockPanel.Dock="Left" Content="Left"></Button>

            <Button DockPanel.Dock="Top" Content="Top"></Button>

            <Button DockPanel.Dock="Right" Content="Right"></Button>

            <Button DockPanel.Dock="Bottom" Content="Bottom"></Button>

            <Button Content="ContentLeft"></Button>

    </DockPanel>

     

    三、StackPanel:栈式面板

    特点:每个元素各占一行或者一列。

    使用场合:

    同类元素需要紧凑排列(如制作菜单和列表)。

    移除其中的元素后能够自动补缺的布局或者动画。

     

    StackPanel适合水平或者垂直方向的布局,固定的区域不适合使用Grid来进行布局,可以使用StackPanel来布局。

    <StackPanel Orientation="Vertical">

            <Button Content="Left"></Button>

            <Button Content="Top"></Button>

            <Button Content="Right"></Button>

            <Button Content="Bottom"></Button>

    </StackPanel>

     

    四、WrapPanel:自动折行面板(环绕面板)

    WrapPanel布局面板将各个控件从左至右按照行或列的顺序排列,当长度或高度不够时就会自动调整进行换行,后续排序按照从上至下或从右至左的顺序进行。

    Orientation——根据内容自动换行;   ItemHeight——所有子元素都一致的高度; ItemWidth——所有子元素都一致的宽度。

    <WrapPanel Orientation="Vertical">

            <Button Content="Left"></Button>

            <Button Content="Top"></Button>

            <Button Content="Right"></Button>

            <Button Content="Bottom"></Button>

    </WrapPanel>

     

    五、Canvas:画布面板

      画布,用于完全控制每个元素的精确位置。他是布局控件中最为简单的一种,直接将元素放到指定位置,主要来布置图面。

    在XAML设计界面,超出的部分不会进行裁剪,

    <Canvas>

            <Button Height="200" Canvas.Right="10" Canvas.Bottom="-100" Content="按钮"></Button>

    </Canvas>

     

    如图所示:

    如果将ClipToBounds属性设为true,在设计界面将会对子元素的超出部分进行裁剪。

    注意:要说明一点Canvas内的子控件不能使用两个以上的Canvas附加属性,如果同时设置Canvas.Left和Canvas.Right属性,那么后者将会被忽略。

    最新回复(0)