布局控件: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. codelite常用快捷键积累

    博客地址:https://www.cnblogs.com/zylyehuo/ 编译整个工作空间 workplace Ctrl+shift+B 编译当前文件 file Ctrl+F7 编译项目 proj ...

  2. 手把手教你安装TrueNas(基础篇)

            玩过蜗牛星际,体验过黑群晖系统崩掉导致里面珍藏12t大姐姐全没了(此处有哭声),我技术又菜,自己恢复是不可能恢复的,装的盗版系统,又不可能联系群晖官方售后恢复.于是乎就想要一个稳定.开 ...

  3. 查询Oracle正在执行的sql语句及执行该语句的用户

    SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, spid 操作系统ID, paddr, sql_text 正在执行的SQL, b.m ...

  4. EBUSY: resource busy or locked, rmdir

    方案一: 方案二: !!! 出现问题后,千万不要忽略npm提示你的警告... 如果以上两种方案还未解决,那么大概率是因为你的npm版本较低导致的,升级你的npm. cnpm install -g np ...

  5. Top 出海 AI 公司招技术!HIX.AI & Pollo.ai | 深圳

    HIX.AI & Pollo.ai 招聘高级海外 AI 产品经理 (25-45K) 岗位职责: 负责Web 端海外 AI 产品的规划与策划,负责产品需求分析及原型设计,并制定方案推动产品研发落 ...

  6. 关于项目中 "不能创建大小为 8190 的行,该大小大于所允许的最大行大小 8060 "的处理

    由于产品底层设计的情况,sqlserver  列设置了 可以随用户 创建自动生成 项目特殊,设置的列过多,有三四百列(通常不会过多) 数据无法正常保存,报错"不能创建大小为 8190 的行, ...

  7. mosquitto的基本参数使用

    当使用mosquitto_pub命令时,可以使用多个参数来配置发布行为.以下是mosquitto_pub命令的一些常见参数及其详细说明: -h, --host <hostname>:指定连 ...

  8. CM311-1A魔百和刷armbian或openwrt系统包

    系统包下载链接:Openwrt:阿里云盘链接:https://www.aliyundrive.com/s/tEemRbs1TYB已失效下载后请解压!!!!!!!!! Armbian:链接:https: ...

  9. Redis 持久化——混合持久化

    1.Redis 持久化--混合持久化 RDB 和 AOF 持久化各有利弊,RDB 可能会导致一定时间内的数据丢失,而 AOF 由于文件较大则会影响 Redis 的启动速度,为了能同时使用 RDB 和 ...

  10. Robot Framework使用循环

    1.普通的For循环 在一个普通的For循环中,循环开始的关键字是 :FOR ,其中的:用于与一般关键字做区分,对于循环结 构体内的每一行,使用 \ 作为改行的行首关键字.对于循环中的变量,可以在 I ...