一、基础知识

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">

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、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>

默认情况下最后一个元素填充剩余空间

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.1类似连连看布局

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

3.2中国八大名菜系列布局

源码下载:PanelDemo.zip

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

  1. WPF学习(3)布局

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

  2. 迟到的 WPF 学习 —— 布局

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

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

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

  4. WPF学习开发客户端软件-任务助手(已上传源码)

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

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

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

  6. WPF学习笔记3——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.Border & Brush

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

随机推荐

  1. Advanced Installer

    Advanced Installer是一款功能强大.可生成符合 MS Windows 认证的 Windows Installer 的 MSI 安装包制作工具,具有友好的图形用户界面,直观而且非常简单的 ...

  2. ASP.NET MVC and jqGrid 学习笔记 1-基本配置

    新建一个mvc项目后

  3. JavaScript版几种常见排序算法

    今天发现一篇文章讲“JavaScript版几种常见排序算法”,看着不错,推荐一下原文:http://www.w3cfuns.com/blog-5456021-5404137.html 算法描述: * ...

  4. “Request Entity Too Large” 上传图片出现大小限制

    昨天公司安卓app上传了图片爆了下面这个错误 <"-//IETF//DTD HTML 2.0//EN"> <html><head> <ti ...

  5. 【转】web常见安全问题以及测试方法

    web安全是我们测试组一直以来作为和性能测试并驾齐驱的两个重点.开发的过程中还需要着重注意,该转义的地方转义:该屏蔽的地方屏蔽,该过滤的地方过滤等等.年底又到了,势必又有大批的发号抽奖之类的活动开发. ...

  6. overflow:hidden清除浮动原理解析及清除浮动常用方法总结

    最近在看<CSS Mastery>这本书,里面有用overflow:hidden来清理浮动的方法.但是一直想不明白为什么能够实现清除浮动,查阅了网络上的解释,下面来总结一下. 一.首先来想 ...

  7. Linux 命令 - chmod: 更改文件模式

    文件的模式 当使用 ls -l 命令查看目录内容时 [huey@huey-K42JE cmdline]$ ls -l /etc/passwd -rw-r--r-- 1 root root 1917 J ...

  8. Linux 命令 - echo: 显示一行文本

    命令格式 echo [OPTION]... [STRING]... 命令参数 -n 不输出行尾的换行符. -e 允许对转义字符进行解释. -E 禁止对转义字符进行解释,这是默认的选项. --help ...

  9. web工程中URL地址的写法

    在开发中我们不可避免的要碰到许多需要写URL地址的情况,这常常让我们感到头疼.下面笔者推荐一种简单的做法.URL地址分为绝对路径和相对路径两种.相对路径又分为相对资源路径和相对根路径.显然绝对路径在开 ...

  10. struts2-权限拦截器、日志拦截器、execAndWait(进度条)拦截器配置

    1.权限拦截器 package login; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.Serv ...