WPF学习之路(十一)布局
布局
Canvas
基本面板,传统布局方式,支持与设备无关的坐标定位元素
<Border BorderThickness="" BorderBrush="Black" Margin="">
<Canvas>
<Button Canvas.Left="" Canvas.Top="" Content="Left=20,Top=50" />
<Button Canvas.Right="" Canvas.Bottom="" Content="Right=20,Bottom=50" />
</Canvas>
</Border>

效率高,适合矢量绘图
StackPanel
用于顺序垂直或水平排列子元素
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Border Grid.Row="" Grid.Column="" BorderThickness="" BorderBrush="Black" Margin="">
<StackPanel>
<Button Content="" />
<Button Content="" />
<Button Content="" />
<Button Content="" />
</StackPanel>
</Border>
<Border Grid.Row="" Grid.Column="" BorderThickness="" BorderBrush="Black" Margin="">
<StackPanel Orientation="Horizontal">
<Button Content="" />
<Button Content="" />
<Button Content="" />
<Button Content="" />
</StackPanel>
</Border>
<Border Grid.Row="" Grid.Column="" BorderThickness="" BorderBrush="Black" Margin="">
<StackPanel FlowDirection="RightToLeft">
<Button Content="" />
<Button Content="" />
<Button Content="" />
<Button Content="" />
</StackPanel>
</Border>
<Border Grid.Row="" Grid.Column="" BorderThickness="" BorderBrush="Black" Margin="">
<StackPanel Orientation="Horizontal" FlowDirection="RightToLeft">
<Button Content="" />
<Button Content="" />
<Button Content="" />
<Button Content="" />
</StackPanel>
</Border>
</Grid>

WrapPanel
与StackPanel类似,当没有空间放置子元素时会自动放到下一行或下一列
<Border BorderThickness="" BorderBrush="Black" Margin="">
<WrapPanel ItemHeight="">
<Button Content="" MinWidth="" />
<Button Content="" MinWidth="" />
<Button Content="" MinWidth="" />
<Button Content="" MinWidth="" />
</WrapPanel>
</Border>

布局会随着窗口大小的改变一起改变
DockPanel
将元素放到面板的某一个边上,拉伸元素填满高度或者宽度,可以设置是否填充剩余空间
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<DockPanel Grid.Row="" Margin="">
<Button DockPanel.Dock="Left" Content="" />
<Button DockPanel.Dock="Top" Content="" />
<Button DockPanel.Dock="Right" Content="" />
<Button DockPanel.Dock="Bottom" Content="" />
<Button DockPanel.Dock="Left" Content="" />
<Button DockPanel.Dock="Top" Content="" />
<Button DockPanel.Dock="Right" Content="" />
<Button DockPanel.Dock="Bottom" Content="" />
</DockPanel>
<DockPanel Grid.Row="" Margin="" LastChildFill="False">
<Button DockPanel.Dock="Left" Content="" />
<Button DockPanel.Dock="Top" Content="" />
<Button DockPanel.Dock="Right" Content="" />
<Button DockPanel.Dock="Bottom" Content="" />
<Button DockPanel.Dock="Left" Content="" />
<Button DockPanel.Dock="Top" Content="" />
<Button DockPanel.Dock="Right" Content="" />
<Button DockPanel.Dock="Bottom" Content="" />
</DockPanel>
</Grid>

Grid
最常用且功能强大的布局(之前的实例中已经有过使用),允许在一个列表中放置子元素
常用属性 Column\Row\ColumnSpan\RowSpan
尺寸:绝对尺寸、自动尺寸、比例尺寸
<Grid Margin="">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid Grid.Row="" Margin="">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Button Grid.Column="" Content="Width=100" />
<Button Grid.Column="" Content="Width=*" />
</Grid>
<Grid Grid.Row="" Margin="">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Button Grid.Column="" Content="Width=100" />
<Button Grid.Column="" Content="Width=*" />
<Button Grid.Column="" Content="Width=*" />
<Button Grid.Column="" Content="Width=*" />
</Grid>
<Grid Grid.Row="" Margin="">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Button Grid.Column="" Content="Width=100" />
<Button Grid.Column="" Content="Width=*" />
<Button Grid.Column="" Content="Width=2*" />
<Button Grid.Column="" Content="Width=*" />
</Grid>
<Grid Grid.Row="" Margin="">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions>
<Button Grid.Column="" Content="Width=100" />
<Button Grid.Column="" Content="Width=*" />
<Button Grid.Column="" Content="Width=2*" />
<Button Grid.Column="" Content="Width=3*" />
</Grid>
</Grid>

IsSharedSizeScope
通过对SharedSizeGroup命名,相同名字的Grid的高度或者宽度可以设置为相同
<Grid Margin="" Grid.IsSharedSizeScope="True">
<Grid Grid.Row="" Margin="">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="" SharedSizeGroup="a"/>
<ColumnDefinition Width="*" SharedSizeGroup="a"/>
</Grid.ColumnDefinitions>
...
</Grid>
<Grid Grid.Row="" Margin="">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="2*" SharedSizeGroup="a"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
...

GridSplitter
可以通过鼠标键盘改变尺寸
<Grid Margin="" Grid.IsSharedSizeScope="True">
<Grid.RowDefinitions>
...
</Grid.RowDefinitions>
<GridSplitter Grid.Row="" HorizontalAlignment="Stretch" VerticalAlignment="Top" ShowsPreview="True" ResizeDirection="Rows" Height="3" Background="Black" />
<Grid Grid.Row="" Margin="">
<Grid.ColumnDefinitions>
...
</Grid.ColumnDefinitions>
<GridSplitter Grid.Column="" HorizontalAlignment="Left" VerticalAlignment="Stretch" ShowsPreview="True" Width="" Background="Black" />
...
</Grid> </Grid>

To be continue...
WPF学习之路(十一)布局的更多相关文章
- WPF学习之路初识
		
WPF学习之路初识 WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...
 - WPF学习(一)--布局控件简介
		
WPF的4种基本布局介绍 1.Grid的布局 这个就没啥特别好说的,其实,基本上复杂的布局,都需要用到Grid. 主要就是对行和列进行进行设置和定义. 1.行表格 列表格: 包含行和列的表格 2.St ...
 - WPF学习(3)布局
		
今天我们来说说WPF的布局.我们知道WinForm的布局主要是采用基于坐标的方式,当窗口内容发生变化时,里面的控件不会随之动态调整,这就造成了一个很不好的用户体验.而WPF为了避免这个缺点,采用了基于 ...
 - 【WPF学习】第二十一章 特殊容器
		
内容控件不仅包括基本控件,如标签.按钮以及工具提示:它们还包含特殊容器,这些容器可用于构造用户界面中比较大的部分区域. 首先介绍ScrollViewer控件,该控件直接继承自ContentContro ...
 - WPF学习之路(十一)布局(续)
		
布局实际上是一个Slot模型,其中每个父对象分配给子对象一个Slot,子对象可以自由占用Slot中的空间,通过Margin\VerticalAlignment\HorizontalAlignment控 ...
 - WPF学习之路(三) 属性与依赖
		
类型是DependencyProperty的属性是依赖属性 依赖属性不同于普通的.Net属性,类似于一个计算过程,根据依赖的值得到最终值. 为什么引入依赖属性: MSDN原文 One of the p ...
 - WPF学习之路(二) XAML(续)
		
属性 简单属性 前面用到的Width/Height都是简单属性,其赋值一定要放到双引号里 XAML解析器会根据属性的类型执行隐式转换 与C#的区别 SolidBrush.Color = Colors. ...
 - WPF学习之路(一) 初识WPF
		
参考<葵花宝典-WPF自学手册> VS2012 先创建第一个WPF小程序 1.创建WPF程序 2.查看Solution,WPF中xaml文件和cs文件经常成对出现 两个主要的类:APP(W ...
 - Wpf学习之路……
		
Wpf学习之路-- Wpf是 .net中一门做winform的技术,和传统的winform的区别在于: 1. 原来的winform就是拖控件,而wpf的控件都死自己拿标记语言(xaml ...
 
随机推荐
- 对于一些Http远程连接Api安全的看法;
			
文章来源于 :http://lesg.cn/?p=122 我的个人博客站点 对于一些Http远程连接Api安全的看法: 当不同系统需要互相通信的时候:如果无法用webservice等方式链接的时候另一 ...
 - html5学习笔记(2)
			
效果图 以下为源码 <!DOCTYPE html> <html> <head lang="en"> <meta charset=" ...
 - 【Java每日一题】20161111
			
package Nov2016; import java.io.Serializable; public class Ques1111 implements Serializable{ private ...
 - java中的几种取整函数
			
舍掉小数取整:Math.floor(2)=2 舍掉小数取整:Math.floor(2.1)=2 舍掉小数取整:Math.floor(2.5)=2 舍掉小数取整:Math.floor(2.9)=2 负数 ...
 - sql传入组合字符串批量操作
			
批量操作时我们可以传入一个有规律的ID或则是其他唯一值字段的组合字符串,然后:select/update/inset......where 字段 in(传入的组合字符串),而且很多时候我们还涉及到其 ...
 - 第 14 章 CSS 颜色与度量单位
			
学习要点: 1.颜色表方案 2.度量单位 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS 颜色和度量单位等问题,包括颜色的选取方式.相对长度和绝对长度等. 一.颜色表方案 颜色的表现形式主要有 ...
 - [转]PHP5 session 详解
			
来源:http://blog.163.com/lgh_2002/blog/static/4401752620105246517509/ http协议是WEB服务器与客户 端(浏览器)相互通信的协议,它 ...
 - The template engine
			
Play has an efficient templating system which allows to dynamically generate HTML, XML, JSON or any ...
 - jQuery10种不同动画效果的响应式全屏遮罩层
			
遮罩层有很多今天介绍这个jQuery10种不同动画效果的响应式全屏遮罩层 效果预览 下载地址 实例代码 <div class="container"> <head ...
 - git和svn
			
git 分布式管理工具 svn 集中式管理工具 1. Git是分布式的,SVN是集中式的,好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提交.合并,也可以不用联网在本地提交 ...