3、WPF学习之-布局

时间:2022-09-05 22:19:15

一、基础知识

1、所有WPF布局容器都派生自System.Windows.Controls.Panel抽象类的面板;

2、WPF种核心布局面板有StackPanel(栈面板)、WrapPanel(环绕面板)、DockPanel(停靠面板)、Grid(网格面板)、UniformGrid(均匀面板)、Canvas(画布)

二、实例

1、StackPanel(栈面板):特点是在水平或垂直的堆栈中放置元素,每个元素各占一行或者一列,这个布局容器通常用于大的、复杂的窗口中的一些小区域

默认情况下,StackPanel面板自上而下的顺序排列元素,使每个元素的高度适合它的内容

1.1垂直布局

<Grid>
<StackPanel>
<Button Name="btn1" Content="Button1" />
<Button Name="btn2" Content="Button2" />
<TextBox Name="txtDemo" Background="Red" />
<CheckBox Name="cbDemo" Content="男" />
<RadioButton Name="rbMan"
Content="男"
GroupName="rbSex" />
<RadioButton Name="rbWomen"
Content="女"
GroupName="rbSex" />
</StackPanel>
</Grid>

1.2水平布局

<StackPanel Orientation="Horizontal">

3、WPF学习之-布局3、WPF学习之-布局

2、WrapPanel(环绕面板):WrapPanel面板在可能的空间中,以一次一行或一列的方式布局控件,在水平方向上,WrapPanel面板从左向右放置条目,然后在随后的行中放置元素,在垂直方向上,WrapPanel面板自上而下的列种放置元素,并使用附加的列放置剩余的条目。

通过Orientation属性来设置

<WrapPanel Orientation="Vertical">
<Button Name="btn1" Content="btn1" Margin=""/>
<Button Name="btn2" Content="btn2" Margin=""/>
<Button Name="btn3" Content="btn3" Margin=""/>
<Button Name="btn4" Content="btn4" Margin=""/>
<Button Name="btn5" Content="btn5" Margin=""/>
</WrapPanel>

3、WPF学习之-布局3、WPF学习之-布局

3、DockPanel(停靠面板):根据容器的整个边界调整元素,默认情况下后添加的元素只能使用剩余的空间,最后一个元素可以占据所有剩余空间

<Grid>
<DockPanel LastChildFill="false">
<Button Name="btn1"
Content="Dock.Top"
DockPanel.Dock="Top" />
<Button Name="btn2"
Content="Dock.Left"
DockPanel.Dock="Left" />
<Button Name="btn3"
Content="Dock.Right"
DockPanel.Dock="Right" />
<Button Name="btn4"
Content="Dock.Bottom"
DockPanel.Dock="Bottom" />
<Button Name="btn5" Content="Dock" />
</DockPanel>
</Grid>

3、WPF学习之-布局3、WPF学习之-布局默认情况下最后一个元素填充剩余空间

4、Grid面板:通过使用对象填充Grid.RowDefinitions和Grid.ColumnDefinations集合来创建网格和行 可以用ShowGridLines="True"来显示网格

<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Name="btn1"
Grid.Row=""
Grid.Column=""
Content="第一行第一列" />
<Button Name="btn2"
Grid.Row=""
Grid.Column=""
Grid.ColumnSpan=""
Background="Green"
Content="第一行第二、三列" />
<Button Name="btn3"
Grid.Row=""
Grid.RowSpan=""
Grid.Column=""
Background="Gray"
Content="第二、三行第一列" />
<Grid Grid.Row=""
Grid.Column=""
ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBox Name="txtDemo"
Grid.Row=""
Grid.Column=""
Background="Azure"/>
</Grid>
</Grid>

3、WPF学习之-布局

三、混合实例

3.1类似连连看布局

3、WPF学习之-布局

源码下载:布局连连看.zip

3.2中国八大名菜系列布局

3、WPF学习之-布局

源码下载:PanelDemo.zip

3、WPF学习之-布局的更多相关文章

  1. WPF学习(3)布局

    今天我们来说说WPF的布局.我们知道WinForm的布局主要是采用基于坐标的方式,当窗口内容发生变化时,里面的控件不会随之动态调整,这就造成了一个很不好的用户体验.而WPF为了避免这个缺点,采用了基于 ...

  2. 迟到的 WPF 学习 &mdash&semi;&mdash&semi; 布局

    布局是 WPF 很重头的一部分内容,这一部分梳理和记录关于布局章节的知识点. 1. WPF 使用一种基于流(Flow-based)的概念来处理布局逻辑,将传统的基于"坐标"的思想尽 ...

  3. WPF学习开发客户端软件-任务助手&lpar;下 2015年2月4日代码更新&rpar;

    时光如梭,距离第一次写的 WPF学习开发客户端软件-任务助手(已上传源码)  已有三个多月,期间我断断续续地对该项目做了优化.完善等等工作,现在重新向大家介绍一下,希望各位可以使用,本软件以实用性为主 ...

  4. WPF学习开发客户端软件-任务助手&lpar;已上传源码&rpar;

    本人纯属WPF新手,布局和WPF的开发水平相当欠缺,从个人来说,还是比较喜欢WPF的,有人说WPF是界面加上WINFORM,我不这样认为,WPF与WINFORM主要的不同在于数据绑定.   这个软件虽 ...

  5. WPF学习05:2D绘图 使用Transform进行控件变形

    在WPF学习04:2D绘图 使用Shape绘基本图形中,我们了解了如何绘制基本的图形. 这一次,我们进一步,研究如何将图形变形. 例子 一个三角形,经Transform形成组合图形: XAML代码: ...

  6. WPF学习笔记3&mdash&semi;&mdash&semi;Layout之1

    一.概述 了解XAML的基本之后,进入Layout的学习.Layout,即布局,可能需要用到几种不同的容器.每一种容器都有各自的逻辑.在用户界面的设计过程中,很多时候是在想办法使得界面更加吸引.实在. ...

  7. WPF学习之路初识

    WPF学习之路初识   WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...

  8. WPF学习拾遗(二)TextBlock换行

    原文:WPF学习拾遗(二)TextBlock换行 下午在帮组里的同事解决一个小问题,为了以后方便,把就把它收集一下吧. 新建一个TextBlock作为最基础的一个控件,他所携带的功能相对于其他的控件要 ...

  9. WPF学习:3&period;Border &amp&semi; Brush

    上一章<WPF学习:2.Layout-Panels-Countainers>主要介绍了布局,容器和面板.这一章主要开始介绍Border(边界)和Brush(画刷). 代码地址:http:/ ...

随机推荐

  1. &lbrack;译&rsqb;学习IPython进行交互式计算和数据可视化(五)

    第四章:交互式绘图接口 本章我们将展示Python的绘图功能以及如何在IPython中交互式地使用它们. NumPy为处理大量的多维数组结构的数据提供了高效的方法.但是看行行列列的数字总不如直接看曲线 ...

  2. 【linux】学习7

    鸟哥 22章内容 单个源代码编译运行 设有一个hello.c 可以用下面方式运行 生成可执行文件a.out [localhost scripts]$ gcc hello.c [localhost sc ...

  3. 【LeetCode】273&period; Integer to English Words

    Integer to English Words Convert a non-negative integer to its english words representation. Given i ...

  4. 贪心 URAL 1303 Minimal Coverage

    题目传送门 /* 题意:最少需要多少条线段能覆盖[0, m]的长度 贪心:首先忽略被其他线段完全覆盖的线段,因为选取更长的更优 接着就是从p=0开始,以p点为标志,选取 (node[i].l < ...

  5. 华南师大 2017 年 ACM 程序设计竞赛新生初赛题解

    题解 被你们虐了千百遍的题目和 OJ 也很累的,也想要休息,所以你们别想了,行行好放过它们,我们来看题解吧... A. 诡异的计数法 Description cgy 太喜欢质数了以至于他计数也需要用质 ...

  6. 干货 &vert; SSMS客户端连接京东云RDS SQL Server配置方法

    干货 | SSMS客户端连接京东云RDS SQL Server配置方法 原创: 于振江 京东云开发者社区  微软SQL Server, Oracle数据库以及MySQL系列占据了关系型数据库市场的绝对 ...

  7. IDEA上传码云报错Push rejected&colon; Push to origin&sol;master was rejected

    原因是README.md文件冲突,码云上在创建项目的时候不要初始化README.md,然后再用IDEA上传

  8. Finecms模板标签调用小结 方便快速入门

    最近接了一个单子客户要求用finecms进行建站,由于也是php代码,也可以直接调用相关函数,所以上手相对比较快,ytkah总结了一些常用的函数方便您快速入门Finecms.一个网站一般由主页.栏目页 ...

  9. 流媒体传输协议详解之---RTSP认证

    from:http://blog.csdn.net/machh/article/details/52121648 Rtsp认证主要分为两种:   基本认证(basic authentication)和 ...

  10. Mac 命令行安装mysql homebrew 安装mysql后,如何配置mysql

    非常好 强力推荐 这个是我最新并且一直推崇的方法:1.安装:sunyichaodeMacBook-Pro:~ sunyichao$ brew install mysql2.开启mysql:mysql. ...