WPF新手快速入门系列 1.布局
【概要】
该系列文章主要描述,新手如何快速上手做wpf开发。看过网上部分的教程,主要讲述的是介绍控件。这并没有问题,但是没有把自己的使用经验也完整的描述出来。
所以特此编写此系列文章希望能帮助到,因为一些工作原因或想入门的朋友们。如有学习过程中想交流学习、疑惑解答可以来此QQ群交流:580749909。
希望加群的人提问时尽量想清楚自己的问题,愿意钻研而不是等现成的答案而不去思考。祝各位同仁早日学会WPF这项技术。
【布局控件介绍】
Gird --
新手的话建议第一个必须掌握的布局控件就是grid,能熟练使用它能应付大部分布局需求。
1.理解gird并不难,它其实就是一个表格。把你想要的控件指定到某一行的某一列,如果不指定则是默认在第一行的第一列。
接下演示一下,如何创建行和列
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
以上代码创建了一个两行两列的grid,然后再看看如何把控件放置到布局中。
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Width="100" Height="25">1</Button>
<Button Grid.Column="1" Width="100" Height="25">2</Button>
<Button Grid.Row="1" Width="100" Height="25">3</Button>
<Button Grid.Row="1" Grid.Column="1" Width="100" Height="25">4</Button>
</Grid>
效果就是这样了。默认不指定的Row或者Column都是0也就是第一个。如果单单讲解这些就没有达到我写文章的效果了接下来讲解拿到需求之后如何分析布局。接下来拿QQ登陆来举例。
假设拿到这样需求之后,主要布局结构用数字标记分为三行。
第一行,用来放关闭、最小化按钮
第二行,用来放TIM图片,这时候有人会问了,那TIM这个背景图片明显是把第一行也占了。这个问题很好有一个属性可以解决叫跨行 Grid.RowSpan="2" 在图片上附加上这个属性就能达到效果了。
举一反三,跨列能应付跨列的需求。Grid.RowSpan="2"
第三行,这个行主要是放下头像、文本框、密码框、登陆按钮、复选框、文字等控件的。那这一行如何布局呢这么复杂。解决方案就是,在第三行里再嵌套一个Grid然后在设定行列等。
这一块留给大家自己分析考虑如果学会了做这个并不难。
StackPanel
继续QQ登陆的图接着讲,这个控件可以用来实现第3行的内容。比如实现那文本框、密码框的布局。
WrapPanel
这个控件呢,主要是让控件自动的在一行里,如果需要换行则规定好WrapPanel的布局控件的宽度,如果布局内容超出了这个宽度则会自动换行,应用于QQ登陆界面对应就是两个复选框。这样不需要指定任何属性他们就自动的站到你想要的位置上了。
Canvas
这个控件需要拿出来单独的讲一讲,它比较特殊。它属于“任意布局”的一种概念,就是你拖控件到UI上的时候你把它放在哪里它就在那里了。接下来我演示一下
Canvas.Left="235" Canvas.Top="182" 这两句主要描述了,button 在canvas控件中距离左侧235px,距离顶部182px。
RenderTransformOrigin 这个属性表示对象中心点 用来定义所有RenderTransform变换中相对位置的的参考点,默认为图形的左上即(0,0),该属性值为相对值,即x和y方向的(0-1)分别指以本图形所在矩形(在Expression blend中可以看到 )的长和宽为参照的百分比。
具体数值不需要关心,因为你拖到地方系统会自动根据你最后放置的点给你自动生成。
WPF新手快速入门系列 1.布局的更多相关文章
- WPF新手快速入门系列 2.绑定
[概要] 上一章讲了布局,按照市面上的书籍每一本讲的顺序都不一样,本系列是希望大家能快速上手去应对工作需要,所以本章就直接开始讲绑定. 如有学习过程中想交流学习.疑惑解答可以来此QQ群交流:58074 ...
- WPF新手快速入门系列 3.MVVM
[概要] 这一章主要讲述,讲述MVVM模式和用法. 如有学习过程中想交流学习.疑惑解答可以来此QQ群交流:580749909.(所有涉及到的源码都上传到了群文件里) 希望加群的人提问时尽量想清楚自己的 ...
- WPF快速入门系列(1)——WPF布局概览
一.引言 关于WPF早在一年前就已经看过<深入浅出WPF>这本书,当时看完之后由于没有做笔记,以至于我现在又重新捡起来并记录下学习的过程,本系列将是一个WPF快速入门系列,主要介绍WPF中 ...
- .Net5 WPF快速入门系列教程
一.概要 在工作中大家会遇到需要学习新的技术或者临时被抽调到新的项目当中进行开发.通常这样的情况比较紧急没有那么多的时间去看书学习.所以这里向wpf技术栈的开发者分享一套wpf教程,基于.net5框架 ...
- WPF快速入门系列(4)——深入解析WPF绑定
一.引言 WPF绑定使得原本需要多行代码实现的功能,现在只需要简单的XAML代码就可以完成之前多行后台代码实现的功能.WPF绑定可以理解为一种关系,该关系告诉WPF从一个源对象提取一些信息,并将这些信 ...
- WPF/MVVM Quick Start Tutorial - WPF/MVVM 快速入门教程 -原文,翻译及一点自己的补充
转载自 https://www.codeproject.com/articles/165368/wpf-mvvm-quick-start-tutorial WPF/MVVM Quick Start T ...
- 快速入门系列--MVC--07与HTML5移动开发的结合
现在移动互联网的盛行,跨平台并兼容不同设备的HTML5越来越盛行,很多公司都在将自己过去的非HTML5网站应用渐进式的转化为HTML5应用,使得一套代码可以兼容不同的物理终端设备和浏览器,极大的提高了 ...
- vue 快速入门 系列 —— vue loader 上
其他章节请看: vue 快速入门 系列 vue loader 上 通过前面"webpack 系列"的学习,我们知道如何用 webpack 实现一个不成熟的脚手架,比如提供开发环境和 ...
- vue 快速入门 系列 —— vue-router
其他章节请看: vue 快速入门 系列 Vue Router Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌. 什么是路由 ...
随机推荐
- Blob分析之board _components.hdev
*用立体方法分割板子组件的示例程序*Application program to illustrate the segmentation* of board _components.hdev wit ...
- 痞子衡嵌入式:为下一代智能可穿戴设备而生 - i.MXRT500
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的新品i.MXRT500. 自2018年i.MXRTxxx系列首款芯片i.MXRT600(主打智能语 ...
- Docker学习日记-安装Docker
Docker是什么: 简单理解就是基于go语言开发的开源的应用容器引擎. 对进程进行封装隔离,属于操作系统层面的虚拟化技术. Docker的优势: 1.更高效的利用系统资源 2.更快速的启动时间 3. ...
- Vue老项目支持Webpack打包
1.老的vue项目支持webpack打包 最近在学习Vue.js.版本是2.6,webpack的版本也相对较老,是2.1.0版本.项目脚手架只配置了npm run dev和npm run build. ...
- 详解 LSTM
LSTM 长短时记忆网络(Long Short Term Memory Network, LSTM),是一种改进之后的循环神经网络,可以解决RNN无法处理长距离的依赖的问题,目前比较流行. 长短时记忆 ...
- 关于GPU你必须知道的基本知识
图形处理单元(或简称GPU)会负责处理从PC内部传送到所连接显示器的所有内容,无论你在玩游戏.编辑视频或只是盯着桌面的壁纸,所有显示器中显示的图像都是由GPU进行渲染的. 对普通用户来说,实际上不需要 ...
- ALGEBRA-前言
“当你读一页不到一个小时的话,可能是你读太快了” 哈哈 可以 慢慢品
- 2020-07-28:已知sqrt (2)约等于 1.414,要求不用数学库,求sqrt (2)精确到小数点后 10 位。
福哥答案2020-07-28: 1.二分法.2.手算法.3.牛顿迭代法.基础是泰勒级数展开法.4.泰勒级数法.5.平方根倒数速算法,卡马克反转.基础是牛顿迭代法. golang代码如下: packag ...
- Homekit_温湿度_人体红外_光强_传感器
市面上大多数,传感器产品多是简单的单个传感器进行售卖,这里我推荐一款四合一的产品,使用Homekit进行控制. 前置需求: 苹果手机一台 四合一传感器一个 USB数据线一根 介绍: 1.外观上是一个小 ...
- 详解POW工作量证明原理
原文地址 来自 微信公众号 区块链大师 POW工作量证明(英文全称为Proof of Work)早在比特币出现之前就已经有人探索,常见的是利用HASH运算的复杂度进行CPU运算实现工作量确定,当然你 ...