当前位置:首页 > 技术知识 > 正文内容

WPF开发教程01-布局控件(wpf 表单布局)

maynowei7个月前 (08-16)技术知识70

布局控件是用于进行控件布局的容器类控件,其内部控件按照一定规律自动排列,且在父控件改变大小时,会自动适应。常用布局控件如下:

1. 一维布局控件(StackPanel)

其内部控件按照某个维度自动排列,排列方向通过Orientation属性控制。

  • 水平方向(Orientation=Horizontal)
<StackPanel Orientation="Horizontal">
    <Label Width="50" Height="50" Background="Red" Margin="10"></Label>
    <Label Width="50" Height="50" Background="Blue" Margin="10"></Label>
    <Label Width="50" Height="50" Background="Yellow" Margin="10"></Label>
</StackPanel>
  • 垂直方向(Orientation=Vertical)
<StackPanel Orientation="Horizontal">
    <Label Width="50" Height="50" Background="Red" Margin="10"></Label>
    <Label Width="50" Height="50" Background="Blue" Margin="10"></Label>
    <Label Width="50" Height="50" Background="Yellow" Margin="10"></Label>
</StackPanel>

2. 停靠布局控件(DockPanel)

指定控件停靠区域,默认为充满,通过在子控件中指定DockPanel.Dock来确定停靠位置

<DockPanel>
    <Label DockPanel.Dock="Left" Background="Red">靠左停靠</Label>
    <Label DockPanel.Dock="Right" Background="Blue">靠右停靠</Label>
    <Label DockPanel.Dock="Top" Background="Yellow">靠上停靠</Label>
    <Label DockPanel.Dock="Bottom" Background="LemonChiffon">靠下停靠</Label>
    <Label Background="AliceBlue">充满</Label>
</DockPanel>

3. 二维布局控件(Grid)

该控件为WPF中最常用的布局控件,提供二维方向的控件布局。类似于一个EXCEL表格;控件中,通过`ColumnDefinitions`和`RowDefinitions`定义行和列信息。其内部子控件,通过Grid.Row和Grid.Column属性指定控件所在单元格,通过Grid.RowSpan和Grid.ColumnSpan属性指定控件的列跨度和行跨度(类似于EXCEL中的合并单元格)

<Grid ShowGridLines="True">
    <Grid.ColumnDefinitions>
        <!--指定列宽度为100像素-->
        <ColumnDefinition Width="100"></ColumnDefinition>
        <!--表示列宽度自适应内容-->
        <ColumnDefinition Width="Auto"></ColumnDefinition>
        <!--未指定时,默认为*,表示按照剩余宽度分配,这里表示本列占据剩余宽度的1/3,下面2*列占据2/3-->
        <ColumnDefinition></ColumnDefinition>
        <ColumnDefinition Width="2*"></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="50"></RowDefinition>
        <RowDefinition Height="50"></RowDefinition>
        <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>

    <Label Grid.Row="0" Grid.Column="0" Background="Yellow">Label1</Label>
    <Label Grid.Row="1" Grid.Column="1" Grid.RowSpan="2" Background="Red">Label2</Label>
    <Label Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="2" Background="AntiqueWhite">Label3</Label>
</Grid>

相关文章

Objective-C的本质(objective-c的特点)

我们平时编写的Objective-C代码,底层实现其实都是C\C++代码,所以Objective-C的面向对象都是基于C\C++的数据结构实现的OC对象的本质Objective-C的对象、类主要是基于...

微软宣布SQL Server 2016,2005版将结束支持

IT之家讯 在芝加哥Ignite大会上,微软宣布了SQL Server 2016,并将于今年夏季发布公开预览版。SQL Server是由微软开发的关系型数据库管理系统,用于软件应用请求数据的存储和管理...

Shopee新手指南:Shopee卖家中心用户界面介绍

1.Shopee各站点前台网页链接:2.Shopee各站点后台网页链接3.Shopee APP下载:安卓版下载链接:https://pan.baidu.com/s/1eSp8M1k#list/path...

Go语言进阶:时间轮(golang时间轮)

时间轮概念时间轮(Timing Wheel)是一种高效的定时任务调度数据结构,特别适合处理大量定时任务。它通过一个循环数组(轮盘)和多个槽位(buckets)来组织定时任务,每个槽位代表一个时间间隔。...

聊聊并发编程: Lock(并发锁有哪些)

之前学习了如何使用synchronized关键字来实现同步访问,Java SE 5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,它提供了与synchronized关键字类似的同步功...

C语言编写多线程,什么时候要使用互斥锁?为什么要使用互斥锁?

在多线程编程中,当多个线程同时访问共享资源(如变量、文件等)时,会出现竞态条件(Race Condition)问题,导致程序的行为不可预测。为了避免这种问题,需要使用互斥锁来保护共享资源的访问。互斥锁...