WPF布局面板-Grid网格布局

Grid网格布局基础简述 Grid.RowDefinitions:行数的属性用来定义行 RowDefinition:决定行数的数量 Grid.RowDefinitions:列数的属性用来定义列 RowDefinition:决定列数的数量 Grid.Row:决定选择的内容摆放在哪个行数 Grid.Column:决定选择的内容摆放在哪个列数 Grid.RowSpan:纵向跨几行 Grid.ColumnSpan:横向跨几列 ... 阅读详情

WPF是微软推出的基于windows的用户界面框架。

它的布局面板有五种,可以根据自己的需求不同来选择布局面板实现功能。

下面的是其中一种:Grid网格布局

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

成一个个网格状的布局近似HTML中的Table。Grid它的子控件都被放到一个个定义好

的格子里。跟其他的各个Panel比较起来,它的功能最多最复杂。

使用Grid布局:

  1. 向RowDefinitions和ColumnDefinitions属性中添加一定数量的RowDefinitions

和 ColumnDefinitions元素从而定义行数列数。

<!--布局控件-->

 <Grid>

<!--自定义行-->

        <Grid.RowDefinitions>

            <RowDefinition Height="2*"/>

            <RowDefinition Height="26*"/>

        </Grid.RowDefinitions>

        <Grid.ColumnDefinitions>

            <ColumnDefinition Width="2*"/>

            <ColumnDefinition Width="15*"/>

</Grid.ColumnDefinitions>

</Grid>

RowDefinition 有Height(它的值又三种类型:比例:数字+*、像素:数字、

自适应(根据内容):auto)

ColumnDefinition 有Width 它的值跟 RowDefinition 的Height一样

放置在Grid面板中的控件元素都必须显示采用附加属性语法定义其 放置所在的行和列,

它们都是以0为基准的整型 值,如果没有显式设置任何行或 列,Grid将会隐式地将控

件加入在第0行第0列。

由于Grid的组成并非简单的添加属性标记来区分行列,这也使得用户应用中可以具体

到某一个单元格中,所以布局起来就很精细。

特点:

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

 因为它的这些特点,使得Grid的使用场合有:

  1. UI布局的框架设计
  2. 大量UI元素需要成行成列对齐的
  3. UI尺寸改变时,元素需要保留固有的宽度和高度比例。(响应式)

常用属性:

Grid.Column-读取或设定指定FrameworkElement的附加属性Grid.Column的值

Grid.ColumnSpan-读取或设定指定FrameworkElement的附加属性Grid.ColumnSpan的值

Grid.Row-读取或设定指定FrameworkElement的附加属性Grid.Row的值

Grid.RowSpan-读取或设定指定FrameworkElement的附加属性Grid.RowSpan的值

常用方法:

GetColumn-取得指定FrameworkElement的附加属性Grid.Column的值

GetColumnSpan-取得指定FrameworkElement的附加属性Grid.Column的值

GetRow-取得指定FrameworkElement的附加属性Grid.Row的值

GetRowSpan-取得指定FrameworkElement的附加属性Grid.RowSpan的值

SetColumn-设置指定FrameworkElement的附加属性Grid.Column的值

SetColumnSpan-设置指定FrameworkElement的附加属性Grid.Column的值

SetRow-设置指定FrameworkElement的附加属性Grid.Row的值

SetRowSpan-设置指定FrameworkElement的附加属性Grid.RowSpan的值

下面加入控件来展示一下效果:

<!--布局控件-->

    <Grid>

        <!--自定义行-->

        <Grid.RowDefinitions>

            <RowDefinition Height="2*"/>

            <RowDefinition Height="26*"/>

        </Grid.RowDefinitions>

        <Grid.ColumnDefinitions>

            <ColumnDefinition Width="2*"/>

            <ColumnDefinition Width="15*"/>

        </Grid.ColumnDefinitions>

        <Grid Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" 

Background="#FFC6E0DE">

            <TextBlock Text="学生安全教育平台" VerticalAlignment="Center" 

HorizontalAlignment="Left" FontSize="20" Padding="20"  Foreground="White"/>

        </Grid>

        <Grid Grid.Row="1" Grid.Column="0" >

            <Grid.RowDefinitions>

                <RowDefinition Height="1*"/>

                <RowDefinition Height="1*"/>

                <RowDefinition Height="1*"/>

.....

           </Grid.RowDefinitions>

            <Button Grid.Row="0" Content="首页"/>

            <Button Grid.Row="1" Content="分类训练"/>

            <Button Grid.Row="2" Content="实战模拟"/>

            <Button Grid.Row="3" Content="实战测试"/>

            <Button Grid.Row="4" Content="查看历史答卷"/>

            <Button Grid.Row="5" Content="试卷规则管理"/>

            <Button Grid.Row="6" Content="试题管理"/>

            <Button Grid.Row="7" Content="考试管理"/>

            <Button Grid.Row="8" Content="权限管理"/>

            <Button Grid.Row="9" Content="系统设置"/>

            <Button Grid.Row="10" Content="退出系统" Background="#FF2EA8EE"/>

        </Grid>

</Grid>

上面指定了控件在Grid表格中的哪一行那一列,如果我们的某个控件跨行或者跨列如

何做呢?例如:我需要退出系统占多行,只需要在

<Button Grid.Row="9" Content="系统设置"/>添加Grid.RowSpan >>>

<Button Grid.Row="10" Grid.RowSpan="16" Content="退出系统" Background="#FF2EA8EE"/>

于跨行和跨列一样,只不过将Grid.ColumnSpan换成Grid.RowSpan。

 

然后Grid如何将控件设置为自适应宽度和高度,或者是固定宽度或固定高度时。

水平方向自适应:HorizontalAlignment="Stretch"

左对齐:HorizontalAlignment="Left"或设置宽度

右对齐:HorizontalAlignment="Right"或设置宽度

垂直方向自适应:VerticalAlignment="Stretch"

顶部对齐:VerticalAlignment="Top"或设置高度

底部对齐:VerticalAlignment="Bottom"或设置高度

<Label Grid.Column="2" Grid.Row="2" Content="test9" 

HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5" Background="Aqua" />

C# WPF入门学习主线篇(十六)—— Grid布局容器 在《C# WPF入门学习主线篇(十六)—— Grid布局容器》这篇文章中,我们详细介绍了WPF中的 `Grid` 布局容器。本文涵盖了 `Grid` 的基本概念、常见属性及使用方法,并通过具体的示例代码展示了如何实现复杂且灵活的用户界面布局。此外,还讨论了 `Grid` 布局容器的优缺点,帮助读者在实际开发中做出更好的布局选择。 阅读详情

相关推荐

WPF布局核心:网格布局Grid

本文详细介绍了WPF中的Grid网格布局系统,主要包括以下核心内容:1)三种行列尺寸定义方式(Auto/*/固定值)及其应用场景;2)元素定位与跨行跨列合并的实现;3)高级技巧如共享尺寸组和动态布局;4)通过邮件客户端案例展示嵌套布局实践。文章还提供了常见问题排查指南,帮助开发者掌握这个最强大的二维布局控件,以构建复杂的界面结构。建议通过表格布局、响应式设计等场景进行实践练习。

Hare的博客 2187

WPF布局面板

StackPanel 是一种常用的布局控件,可以支持水平或垂直排列,但不会换行。当子元素添加到 StackPanel 中时,它们将按照添加的顺序依次排列。默认情况下,StackPanel 的排列方向是垂直的,即子元素将从上到下依次排列。可以使用 Orientation 属性更改排列方向。可以设置两种排列方式:横排(Horizontal)和竖排(Vertical,默认)。水平排列时,每个元素都与面板一样高;垂直排列时,每个元素都与面板一样宽。

A_nanda的博客 2369

WPF的UI布局

WPF的UI布局分为六大布局 第一种:Grid网格布局 Grid顾名思义就是“网格”,它的子控件被放在一个一个实现定义好的小格子面,整齐配列。Grid和其他各个Panel比较起来,功能最多也最为复杂。 要使用Grid,首先要向RowDefinitions和ColumnDefinitions属性中添加一定数量的RowDefinitions和 ColumnDefinitions元素,从而定义行数和列数。 第二种:DockPanel泊靠式面板布局 DockPanel定义一个区域,在此区域中,您可以使子

weixin_57787682的博客 704

WPF基础五:UI①布局元素Grid

Grid 定义由列和行组成的灵活的网格区域。 Grid的特点: 可以定义任意数量的行和列。 行的高度和列的宽度可以使用绝对值、相对比例或自动调整的方式进行精确设定、并可设置最大和最小值。 内部元素可以设置自己的所在的行和列,还可以设置自己跨行、跨列的数量。 可以设置Children元素的对齐方向。 Grid的使用场合: UI布局的大型框架设计。 大量UI元素需要成行或者列对齐的情况。 UI整体尺寸改变时,元素需要保持固有的高度和宽度...

hd51cc的博客 2399

WPF Grid跨行、跨列

开发工具与关键技术:MVC、WPF 作者:刘俊杰 撰写时间:2019年05月15日 Grid顾名思义就是“网格”,以表格形式布局元素。在Grid布局中除了使用Row和Column附加属性在单元格中放置元素,还可以使用另外两个附加属性使用元素跨越多个单元格,这两个附加属性是RowSpan(跨行)和ColumnSpan(跨列)。 通过下面代码了解跨行、跨列: <!--网格布局--> ...

weixin_44552202的博客 8960

WPF五种布局做出简单的嵌套页面

开发工具与关键技术:Visual Studio 2015 作者:王成 撰写时间:2019年4月9日 创建一个Wpf应用程序 首先最外层使用Grid网格布局,使用Grid网格布局把窗体分为三行三列 <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> ...

weixin_44545511的博客 3888

WPF中5种内建面板Canvas、StackPanel、WrapPanel、DockPanel、Grid分析

Canvas、StackPanel、WrapPanel、DockPanel和GridWPF中主要的5种内建面板,这些面板类都位于System.Windows.Controls命名空间下。 WPF内建面板之——Grid Grid是最通用的面板,它可以让你在一个多行、多列的表中排列子元素,而不依靠包装,提供了许多特性来有效地可能告知行和列。 用Grid实现类似于Visual Studio的启动界面:...

邻家小哥哥的博客 3047

.NET WPF(6)布局Grid面板

.WPF(6)布局Grid面板 1.Grid:网格面板         Grid顾名思义就是“网格”,以表格形式布局元素,对于整个面板上的元素进行布局,它的子控件被放在一个一个事先定义好的小格子面,整齐配列。 Grid和其他各个Panel比较起来,功能最多也最为复杂。要使用Grid,首先要向RowDefiniti...

qq_43434300的博客 687

1、布局容器Grid、StackPanel、GroupBox、DockPanel、WrapPanel

Grid——网格布局,其中控件或容器需指定位置 StackPanel——堆叠面板,其中的控件水平布局、竖直布局 DockPanel——停靠面板,内部控件或容器可以放置在上、下、左、右 WrapPanel——可以看作是具有自动换行功能的StackPanel容器。窗体太小时,其末尾的控件会自动换行。像Java中的流布局 布局原则:先整体规划(Grid),再局部规划(Grid、StackPane...

weixin_30867015的博客 666

VS-WPF窗口布局

WPF窗口布局面板》 一、 布局面板类型 1. 泊靠式面板 特点:内部元素可以选择泊靠的方向(上下左右) 2. 栈式面板 特点:可将包含的元素在水平或垂直方向排成一条线,当移除一个元素后,后面的元素会自动向前填充空缺。 3. 自动折行面板 内部元素在排满一行后能够自动折行 4. Grid(网格布局) 特点:可以定义任意数量的行和列,非常灵活。行的高度和列的宽度可以使用绝对值、相对比例或自动调整或...

weixin_44547431的博客 1189

布局容器Grid、StackPanel、GroupBox、DockPanel、WrapPanel

布局容器Grid、StackPanel、GroupBox、DockPanel、WrapPanel

学习之路,创业之光 582

WPF布局

WPF布局 作者:陈钰桃 撰写时间:2021年8月27日 一、Grid网格 要使用Grid,首先要向RowDefinitions和ColumnDefinitions属性中添加一定数量的RowDefinitions和 ColumnDefinitions元素,从而定义行数和列数。 效果图及代码 < RowDefinition Height=“40”/>< !–行1,高40–> <RowDefinition Height=“Auto”/ >< !–行2,高度:Auto根

sult812的博客 341

WPF中的布局元素

WPF的页面布局,页面布局是一个项目的核心,同时也一个项目的开端,良好的布局对项目有很大的影响,所以封面上的排版也是要点。 一个项目会有一个布局,或者多个布局,每一种布局各不一样。 下面是XAML的五个布局元素: ※ Gride:网格。 ※ DockPanel:泊靠式布局 ※ StackPanel:栈式布局 ※ WrapPanel:自动拆行面板 ※ Canvas:画布 每个页面的布局分别如下: 一...

weixin_44548316的博客 295

WPF_常用的五种布局方式

WPF_常用的五种布局方式 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:Visual Studio 2015 * SQL Server 作者:叶 撰写时间:2019年01月01日 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...

weixin_44564948的博客 2134

WPF学习笔记(10)布局与附加属性

WPF的六个布局控件介绍

lzt1027的博客 1121

WPF几种常用布局面板

用于将子元素排列在一行或一列中,当没有足够的空间时,它会将元素移动到下一行或列。与 StackPanel 不同,WrapPanel 会自动处理元素的对齐和换行。它也可以使用 Orientation 属性更改排列方向。Orientation 属性和StackPanel 一样,唯一的区别就是 排列 默认不同,WrapPanel 排列方式 横排(Horizontal,默认)和竖排(Vertical)例如: 横排(Horizontal,默认)

欢迎来到我的博客,这里记录了我学习、实践和探索过程中的心得体会! 2295

.NET学习手记之:WPF-布局

(1)、DockPanel(停靠面板):最适合用来创建基础用户界面的顶级结构,如Office Word一样的有菜单有工具栏,工作窗口占据其它空间。一个简单的停靠面板布局:   顶部   底部   左边   右边   剩余部分 (2)、Grid(网格面板):在网格上布局,可以在同一网格上放上多个元素,不同元素以不同的创建次序。用Panel.ZIndex属性可以改变这种次序。   Sh

美由心生的专栏 673
上一篇: JavaSystem类
下一篇: WPF响应式的布局面板
Yangll29
博客等级 码龄8年 35粉丝 42原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值