布局控件:Grid和StackPanel

本文同时为b站WPF课程的笔记,相关示例代码

一个窗口顶上的部分叫做非客户区,下面的部分叫做客户区域。非客户区域主要就是一个Title和三个窗口样式按钮。我们主要学习修改客户区域。

Grid

直接在<Window>标签下当然也是可以直接写元素的,但是只能写一个。

所以要先套用一个Grid

Grid中的元素默认是双居中的。可以用HorizontalAlignment="Left"VerticalAlignment="Bottom"等可以简单分离位置

并且默认元素也是占满全屏的,所以需要设置好大小

WPF中的单位是与设备无关的,每个单位是\(\frac1 {96}\)英寸,也就是说当设备分辨率是96dpi时,该控件的大小为一英寸

也就是说,修改电脑的缩放比例是会导致整个程序的控件大小变化的。如果需要不变的话,将对应尺寸除以缩放比例即可

double screenscale = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width / SystemParameters.PrimaryScreenWidth;//windows
double screenscale1 = NSScreen.MainScreen.Frame.Width/ SystemParameters.PrimaryScreenWidth;//MacOs

分配行列

Grid是一种表格布局,规定好行列才能更好的规划页面

为了使在不添加控件的情况下显示Grid布局,可以<Grid ShowGridLines="True">,就会用虚线表示出行列布局

<Grid.RowDefinitions></Grid.RowDefinitions>中添加几个<RowDefinition/>就可以定义行。默认的是等间距的,Height属性修改行高。

在之后添加元素时,可以指定其属于哪个行列(不指定默认第一个),从0开始计数,如<Button Grid.Row="0"/>

定义列的话同理,就是Column

接下来可能还需要定义控件准确的位置:使用Margin="a,b,c,d",其中abcd是四个数字,分别表示距离“左上右下”的距离。

如果是多个相同元素,依次排开,那么可以套用一个横向的StackPanel:修改Orientation="Horizontal"

StackPanel

添加一个按钮,不设置尺寸的话,按钮大小是比较小的。多添加几个按钮的话,会依次向下排列。

行列尺寸

绝对尺寸:100

100表示100个单位,每个单位是1/96英寸。

无论如何拉伸窗口,该行/列都不变

按比例:2*

2*带有*表示占有两份

拉伸窗口,并列的行/列按照比例不变一起伸缩

按内容:Height/Width="AUTO"

如果没有内容,则尺寸为0

总结

Grid:复杂的行/列结构和精确的对齐控制

StackPanel:简单的线性排列,不需要复杂对齐或分布

通常两者可以互相嵌套结合

下标从0开始

Reference

[C#]WPF 分辨率的无关性的问题

布局控件:Grid和StackPanel的更多相关文章

  1. Silverlight 2学习笔记二:三个基本布局控件(Canvas、StackPanel、Grid )

    这篇文章主要是翻译了ScottGu博客的文章:Silverlight Tutorial Part 2: Using Layout Management.虽然是翻译,但通过笔记记录,我发现对这三个布局控 ...

  2. 布局控件Grid

    XAML概述 Silverlight的控件绘制是由XAML语言进行支持的.什么是XAML语言? 简单的说,XAML(Extensible Application Markup Language )是一 ...

  3. Expression Blend实例中文教程(5) - 布局控件快速入门StackPanel,ScrollViewer和Border

    上一篇,介绍了Canvas布局控件在Blend中的使用.本篇继续介绍布局控件StackPanel,ScrollViewer和Border. 相对于Grid和Canvas来说,StackPanel,Sc ...

  4. 在Winform界面使用自定义用户控件及TabelPanel和StackPanel布局控件

    在很多时候,我们做一些非常规化的界面的时候,往往需要创建一些用户控件,在其中绘制好一些基础的界面块,作为后续重复使用的一个单元,用户控件同时也可以封装处理一些简单的逻辑.在开发Winform各种类型项 ...

  5. 重新想象 Windows 8 Store Apps (7) - 控件之布局控件: Canvas, Grid, StackPanel, VirtualizingStackPanel, WrapGrid, VariableSizedWrapGrid

    原文:重新想象 Windows 8 Store Apps (7) - 控件之布局控件: Canvas, Grid, StackPanel, VirtualizingStackPanel, WrapGr ...

  6. Expression Blend实例中文教程(3) - 布局控件快速入门Grid

    上一篇对Blend 3开发界面进行了快速入门介绍,本篇将基于Blend 3介绍Silverlight控件.对于微软开发工具熟悉的朋友,相信您很快就熟悉Blend的开发界面和控件. XAML概述 Sil ...

  7. Windows 8.1 应用再出发 - 几种布局控件

    本篇为大家介绍Windows 商店应用中几种布局控件的用法.分别是Canvas.Grid.StackPanel 和 VariableSizedWrapGrid. 1. Canvas Canvas使用绝 ...

  8. WP 类似扑克牌布局控件和类似扑克卡片控件

    一.说明 本文代码来源: <windows phone 7 程序设计> Charles Petzold 控件效果: 二.要点: 1.ItemControl.子项容器模板(ItemsCont ...

  9. WPF布局控件与子控件的HorizontalAlignment/VerticalAlignment属性之间的关系

    WPF布局控件与子控件的HorizontalAlignment/VerticalAlignment属性之间的关系: 1.Canvas/WrapPanel控件: 其子控件的HorizontalAlign ...

  10. WPF自学入门(二)WPF-XAML布局控件

    上一篇介绍了xaml基本知识,我们已经知道了WPF简单的语法.那么接下来,我们要认识一下WPF的布局容器.布局容器可以使控件按照分类显示,我们一起来看看WPF里面可以使用哪些布局容器用来布局. 在WP ...

随机推荐

  1. 关于valueOf的一点思考

    官方描述:返回值为该对象的原始值. 来源:Object.prototype,所以所有js对象都继承了此方法,根据犀牛书第六版的描述,对象转换为数字和字符串的时候的过程是不一样的. 对象 -> 字 ...

  2. ant design pro git提交error; Angular 团队git提交规范

    前言 在使用 ant design pro 时,git 提交报错 > running commit-msg hook: fabric verify-commit ERROR 提交日志不符合规范 ...

  3. 多主机网络下 Docker Swarm 模式的容器管理

    分类专栏: Services/Server Management Linux Basics Linux资讯 http://www.linuxprobe.com/thread版权导读    本文将以多主 ...

  4. Pydantic Mixin:构建可组合的验证系统体系

    title: Pydantic Mixin:构建可组合的验证系统体系 date: 2025/3/22 updated: 2025/3/22 author: cmdragon excerpt: Pyda ...

  5. Coupled Iterative Refinement for 6D Multi-Object Pose Estimation论文精读

    目录 Coupled Iterative Refinement for 6D Multi-Object Pose Estimation论文精读 论文介绍 Abstract Introduction Re ...

  6. BUUCTF---robomunication

    略有抽象,第一次接触直接上题解吧

  7. 深入理解泛型-重写泛型类方法遇到的问题(涉及JVM反编译字节码)

    下面的代码DateInterval类想重写父类Pair<LocalDate>中的setSecond方法,保证设置的第二个日期要在第一个日期之后,不能出现second早于first的情况.这 ...

  8. FastAPI Pydantic动态调整Schema

    title: FastAPI Pydantic动态调整Schema date: 2025/3/29 updated: 2025/3/29 author: cmdragon excerpt: Pydan ...

  9. 【Python】文件批量重命名

    需求: 经常有很多相似的文件需要重命名,如果一个一个来太麻烦了,正好会Python,所以用Python写了个脚本,把符合要求的文件的文件名修改为新的. 代码: # coding:utf-8 # @Ti ...

  10. MySQL 修复损坏表

    修复MySQL损坏表的简单步骤,不一定适用任意情况下的表损坏的问题,留爪. 简单3步曲: # 用`root`用户登录MySQL # 这里可能需要输入密码 mysql -uroot -p # 使用指定数 ...