布局控件:Grid和StackPanel
布局控件:Grid和StackPanel
一个窗口顶上的部分叫做非客户区,下面的部分叫做客户区域。非客户区域主要就是一个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
布局控件:Grid和StackPanel的更多相关文章
- Silverlight 2学习笔记二:三个基本布局控件(Canvas、StackPanel、Grid )
这篇文章主要是翻译了ScottGu博客的文章:Silverlight Tutorial Part 2: Using Layout Management.虽然是翻译,但通过笔记记录,我发现对这三个布局控 ...
- 布局控件Grid
XAML概述 Silverlight的控件绘制是由XAML语言进行支持的.什么是XAML语言? 简单的说,XAML(Extensible Application Markup Language )是一 ...
- Expression Blend实例中文教程(5) - 布局控件快速入门StackPanel,ScrollViewer和Border
上一篇,介绍了Canvas布局控件在Blend中的使用.本篇继续介绍布局控件StackPanel,ScrollViewer和Border. 相对于Grid和Canvas来说,StackPanel,Sc ...
- 在Winform界面使用自定义用户控件及TabelPanel和StackPanel布局控件
在很多时候,我们做一些非常规化的界面的时候,往往需要创建一些用户控件,在其中绘制好一些基础的界面块,作为后续重复使用的一个单元,用户控件同时也可以封装处理一些简单的逻辑.在开发Winform各种类型项 ...
- 重新想象 Windows 8 Store Apps (7) - 控件之布局控件: Canvas, Grid, StackPanel, VirtualizingStackPanel, WrapGrid, VariableSizedWrapGrid
原文:重新想象 Windows 8 Store Apps (7) - 控件之布局控件: Canvas, Grid, StackPanel, VirtualizingStackPanel, WrapGr ...
- Expression Blend实例中文教程(3) - 布局控件快速入门Grid
上一篇对Blend 3开发界面进行了快速入门介绍,本篇将基于Blend 3介绍Silverlight控件.对于微软开发工具熟悉的朋友,相信您很快就熟悉Blend的开发界面和控件. XAML概述 Sil ...
- Windows 8.1 应用再出发 - 几种布局控件
本篇为大家介绍Windows 商店应用中几种布局控件的用法.分别是Canvas.Grid.StackPanel 和 VariableSizedWrapGrid. 1. Canvas Canvas使用绝 ...
- WP 类似扑克牌布局控件和类似扑克卡片控件
一.说明 本文代码来源: <windows phone 7 程序设计> Charles Petzold 控件效果: 二.要点: 1.ItemControl.子项容器模板(ItemsCont ...
- WPF布局控件与子控件的HorizontalAlignment/VerticalAlignment属性之间的关系
WPF布局控件与子控件的HorizontalAlignment/VerticalAlignment属性之间的关系: 1.Canvas/WrapPanel控件: 其子控件的HorizontalAlign ...
- WPF自学入门(二)WPF-XAML布局控件
上一篇介绍了xaml基本知识,我们已经知道了WPF简单的语法.那么接下来,我们要认识一下WPF的布局容器.布局容器可以使控件按照分类显示,我们一起来看看WPF里面可以使用哪些布局容器用来布局. 在WP ...
随机推荐
- 关于valueOf的一点思考
官方描述:返回值为该对象的原始值. 来源:Object.prototype,所以所有js对象都继承了此方法,根据犀牛书第六版的描述,对象转换为数字和字符串的时候的过程是不一样的. 对象 -> 字 ...
- ant design pro git提交error; Angular 团队git提交规范
前言 在使用 ant design pro 时,git 提交报错 > running commit-msg hook: fabric verify-commit ERROR 提交日志不符合规范 ...
- 多主机网络下 Docker Swarm 模式的容器管理
分类专栏: Services/Server Management Linux Basics Linux资讯 http://www.linuxprobe.com/thread版权导读 本文将以多主 ...
- Pydantic Mixin:构建可组合的验证系统体系
title: Pydantic Mixin:构建可组合的验证系统体系 date: 2025/3/22 updated: 2025/3/22 author: cmdragon excerpt: Pyda ...
- Coupled Iterative Refinement for 6D Multi-Object Pose Estimation论文精读
目录 Coupled Iterative Refinement for 6D Multi-Object Pose Estimation论文精读 论文介绍 Abstract Introduction Re ...
- BUUCTF---robomunication
略有抽象,第一次接触直接上题解吧
- 深入理解泛型-重写泛型类方法遇到的问题(涉及JVM反编译字节码)
下面的代码DateInterval类想重写父类Pair<LocalDate>中的setSecond方法,保证设置的第二个日期要在第一个日期之后,不能出现second早于first的情况.这 ...
- FastAPI Pydantic动态调整Schema
title: FastAPI Pydantic动态调整Schema date: 2025/3/29 updated: 2025/3/29 author: cmdragon excerpt: Pydan ...
- 【Python】文件批量重命名
需求: 经常有很多相似的文件需要重命名,如果一个一个来太麻烦了,正好会Python,所以用Python写了个脚本,把符合要求的文件的文件名修改为新的. 代码: # coding:utf-8 # @Ti ...
- MySQL 修复损坏表
修复MySQL损坏表的简单步骤,不一定适用任意情况下的表损坏的问题,留爪. 简单3步曲: # 用`root`用户登录MySQL # 这里可能需要输入密码 mysql -uroot -p # 使用指定数 ...