WPF入门 #1 WPF布局基础

WPF当中有许多的布局容器控件,例如<Grid>、<StackPanel>、<WrapPanel>、<DockPanel>、<UniformGrid>。接下来分别介绍一下各个布局容器控件。

Grid

bash 复制代码
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="2*"/>
        <RowDefinition/>
    </Grid.RowDefinitions>

    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="2*"/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>

    <Border Grid.Row="0" Grid.Column="0" Background="Red"/>
    <Border Grid.Row="0" Grid.Column="1" Background="Yellow"/>
    <Border Grid.Row="1" Grid.Column="0" Background="Blue"/>
    <Border Grid.Row="1" Grid.Column="1" Background="Green"/>
</Grid>

Grid中的元素还可以跨行和跨列:

StackPanel

StackPanel默认水平排列,具有 Orientation=""属性可以改变排列方向。

WrapPanel

WrapPanel默认水平排列,也具有 Orientation=""属性可以改变排列方向。

DockPanel

DockPanel具有停靠的功能,位于DockPanel中的元素,可以设置它的方向。

UniformGrid

这个容器最大的作用就是在有限的空间里面均分剩余空间。

下面对一个页面进行布局模拟练习:

bash 复制代码
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="80"/>
        <RowDefinition/>
    </Grid.RowDefinitions>

    <Border Background="#FFECF1"/>

    <Grid Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="200"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>

        <Border Background="#FF7F24"/>

        <Grid Grid.Column="1" Margin="5">
            <Grid.RowDefinitions>
                <RowDefinition Height="100"/>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>

            <Grid Grid.Row="0">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>

                <Border Margin="5" Grid.Column="0" Background="#1b1c1d"/>
                <Border Margin="5" Grid.Column="1" Background="#2AC864"/>
                <Border Margin="5" Grid.Column="2" Background="#1b1c1d"/>
                <Border Margin="5" Grid.Column="3" Background="#F85A54"/>
                <Border Margin="5" Grid.Column="4" Background="#1b1c1d"/>
            </Grid>
            
            <Grid Grid.Row="1">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="1.5*"/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>

                <Border Margin="5" Grid.Column="0" Background="#1b1c1d"/>
                <Border Margin="5" Grid.Column="1" Background="#2AC864"/>
            </Grid>
            
            <Grid Grid.Row="2">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="1.5*"/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>

                <Border Margin="5" Grid.Column="0" Background="#1b1c1d"/>
                <Border Margin="5" Grid.Column="1" Background="#F85A54"/>
            </Grid>
        </Grid>
    </Grid>
</Grid>
相关推荐
努力努力再努力FFF21 小时前
医生对AI辅助诊断感兴趣,作为临床人员该怎么了解和学习?
人工智能·学习
OBiO201321 小时前
Cell | 突破AAV载体容量限制!路中华/姜玉武/刘太安团队开发AAVLINK系统实现大基因递送
笔记
智者知已应修善业1 天前
【51单片机2个按键控制流水灯运行与暂停】2023-9-6
c++·经验分享·笔记·算法·51单片机
sakiko_1 天前
UIKit学习笔记5-使用UITableView制作聊天页面
笔记·学习·swift·uikit
rockey6271 天前
AScript之eval函数详解
c#·.net·script·eval·expression·动态脚本
Alice-YUE1 天前
【js高频八股】防抖与节流
开发语言·前端·javascript·笔记·学习·ecmascript
北山有鸟1 天前
修改源码法和插件法
嵌入式硬件·学习
richxu202510011 天前
嵌入式学习之路->stm32篇->(14)通用定时器(上)
stm32·单片机·嵌入式硬件·学习
小陈phd1 天前
TensorRT 入门完全指南(一)——从核心定义到生态工具全解析
人工智能·笔记
是上好佳佳佳呀1 天前
【前端(十一)】JavaScript 语法基础笔记(多语言对比)
前端·javascript·笔记