废话不多说,接下来直接开始介绍WPF-UI界面-Grid面板

如图就是创建好了的一个WPF项目,整个界面被一个Window窗体包含起来,上面类似于什么什么网址什么的其实就相当于.net的命名空间,缺什么引用的时候,就会提示你缺少引用,那么只需要引用进来就行了。

x:Class=“滴滴滴”,这个“滴滴滴”的内容就是所创建窗体的目录,比如这个就是我创建的MVVMText项目,在Views文件夹下的Login视图。

Title就是窗体最上方的标题,Height和width就是窗体的高度和宽度了,这些都可以自己手动修改定义。

接下来进入正题,什么是Grid,Grid我理解的一个含义就是-单元格。对,就是Excel的单元格,每个单元格里面都可以装一些我们需要的控件。但我们装控件前,必须要为它写一个结构,就比如说整体的一个行列,需要多少行,需要多少列。

在这个Grid里面,首先有Grid.ColumnDefinitions和Grid.RowDefinitions,这两个的含义就是给这个Grid定义2列3行的这样一个网格(一行就不用定义了,默认为一),在设置列和行的数量时,我们可以去定义第几列第几行的一个宽度和高度,*表示填充满剩下的空间,auto表示自动给空间一个刚好的空间,而数字+*的这种组合就是对应的比例,比如说我定义了3*,2*和4*,其意义就是对应的3:2:4的比例来分布大小。接着在Grid里面放入我的控件,可以看到控件里面有Grid.Column和Grid.Row这两个属性,这两个的属性意思是这个控件所在的列与行,第一行第一列默认从0开始依次根据自己的需求来进行放入。HorizontalAlignment表示水平方向,这里代表控件在水平方向居中,意思就是当这个定义的单元格的行大于控件大小的高则控件在水平方向上的居中位置显示。VerticalAlignment则表示垂直方向上的位置了。今天简单的介绍了一下Grid面板布局,在实际项目运用中,熟练掌握这最常用的Grid就完全够用了,在初始布局时一定要先想好给每行每列对应的宽高值,用这个值来限定控件的大小,尽量不要手动去设置控件大小(当然有些控件是必须要去手动设置的如:Button),一个Grid里面可以放置多个Grid,定义多个Grid的宽高,所以,当有些比较复杂的UI时候,首先想好这个UI分成几行几列,然后每行每列是否里面还包含了有多行多列,这个时候就可以去用多个Grid来做了。

最后一句忠告:初学者千万千万别拖控件啊,偷懒的效果是没用的。WPF界面必须要手把手的敲,拖控件简直是流氓行为。

从新手小白到老手大白的成长之路第二弹-WPF之UI界面之Grid面板的更多相关文章

  1. 从新手小白到老手大白的心路历程-First Blog

    本人于2019年毕业重庆市某一所乡间大学,所学专业方向是.net,至今已经工作了1个多月了,天天被上司骂,还差点儿被开除,但我死皮赖脸的勉强的“活”了下来,在今后的日子里面,我会陆续的分享我的成长经历 ...

  2. Python成长之路第二篇(1)_数据类型内置函数用法

    数据类型内置函数用法int 关于内置方法是非常的多这里呢做了一下总结 (1)__abs__(...)返回x的绝对值 #返回x的绝对值!!!都是双下划线 x.__abs__() <==> a ...

  3. python成长之路第二篇(4)_collections系列

    一.分别取出大于66的数字和小于66的数字 小练习:需求要求有一个列表列表中存着一组数字,要求将大于66的数字和小于66的数字分别取出来 aa = [11,22,33,44,55,66,77,88,9 ...

  4. Python成长之路第二篇(3)_字典的置函数用法

    字典的置函数用法(字典dict字典中的key不可以重复) class dict(object): """ dict() -> new empty dictionar ...

  5. Python成长之路第二篇(2)_列表元组内置函数用法

    列表元组内置函数用法list 元组的用法和列表相似就不一一介绍了 1)def append(self, p_object):将值添加到列表的最后 # real signature unknown; r ...

  6. python成长之路——第二天

    cpython:c解释器  .pyc(字节码)——机器码 jpython :java解释器   java字节码   ironpython :C#解释器   C#字节码   .... 上面的:编译完之后 ...

  7. 我的Python成长之路---第二天---Python基础(8)---2016年1月9日(晴)

    数据类型之字典 一.字典简介 字典dict(dictionary),在其他语言中也成为map,使用键-值(key-value)的形式存储和展现,具有极快的查找速度. 字典的定义 d = {'key': ...

  8. 我的Python成长之路---第二天---Python基础(7)---2016年1月9日(晴)

    再说字符串 一.字符串的编码 字符串的编码是个很令人头疼的问题,由于计算机是美国人发明的,他们很理所当然的认为计算机只要能处理127个字母和一些符号就够用了,所以规定了一个字符占用8个比特(bit)也 ...

  9. 《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》

    <菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学 ...

随机推荐

  1. 第04组 Beta冲刺(2/4)

    队名:斗地组 组长博客:地址 作业博客:Beta冲刺(2/4) 各组员情况 林涛(组长) 过去两天完成了哪些任务: 1.分配展示任务 2.收集各个组员的进度 3.写博客 展示GitHub当日代码/文档 ...

  2. Qt 信号和槽异常: QObject::connect: No Such slot baseClassName::subClassfunction() in ......

    2019-08-14起笔 小熊的情况描述: 父类A继承自QWidget,所以父类A自动添加了Q_OBJECT.  子类B继承自父类A,子类B没有添加Q_OBJECT.在子类B中给动态创建的控件添加事件 ...

  3. [译]Vulkan教程(29)组合的Image采样器

    [译]Vulkan教程(29)组合的Image采样器 Combined image sampler 组合的image采样器 Introduction 入门 We looked at descripto ...

  4. C++之指针和引用

    指针和引用的异同点总结 异同点 指针 引用 1 指针是一个变量,本身是一个实体,指针中的内容是一个地址值 该值指向内存中的一个存储单元 引用只是一个别名,实质上指向同一对象 系统不为引用分配内存 2 ...

  5. ubuntu上编译和使用easy_profiler对C++程序进行性能分析

    本文首发于个人博客https://kezunlin.me/post/91b7cf13/,欢迎阅读最新内容! tutorial to compile and use esay profiler with ...

  6. Ubuntu下预览raw格式图片

    默认Ubuntu下资源管理器是不可以直接预览raw格式图片的,这就给查看图片带来很大的不便,下面我们就选择安装UFRaw来预览Raw格式图片 1. 首先在terminal安装UFRaw sudo ap ...

  7. PHP 核心特性 - 错误处理

    错误与异常 错误,可以理解程序本身的错误,例如语法错误.而异常则更偏向于程序运行不符合预期或者不符合正常流程:对于 PHP 语言而言,处理错误和处理异常使用的机制完全不同,因此很容易让人产生困惑. 例 ...

  8. django.db.utils.OperationalError: (1093, "You can't specify target table 'xxx' for update in FROM clause")

    这个错误的意思是,不能在update某张表的where条件中,再次select这张表的某些值作为筛选条件,比如: update message set content = "hello&qu ...

  9. 在Python中反向遍历序列(列表、字符串、元组等)的五种方式

    1. reversed() a = [1, 2, 3, 4] for i in reversed(a): print(i) 2. range(len(a)-1, -1, -1) a = [1, 2, ...

  10. 原生js对cookie的增删改查

    一.增 document.cookie = cname + "=" + cvalue + ";expires=" + expires + ";path ...