无废话WPF系列7:WPF布局控件

简介:

一、 Grid

a. 单元格的宽度可以设置三类值

绝对值:double数值加单位后缀

比例值:double数值加一个星号*

自动值:  auto,高度将有内部的控件的高度和宽度决定。

b. Grid可接受的宽度和高度的单位

1in=96px

1cm=(96/2.54)px

1pt=(96/72) px

c. 示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<Window x:Class= "DeepXAML.MainWindow"
         xmlns= "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x= "http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local= "clr-namespace:DeepXAML"      
         Title= "MainWindow"  Height= "250"  Width= "450" >
     <Window.Resources>
       <Style TargetType= "Button" >
             <Setter Property= "Margin"  Value= "5" ></Setter>
         </Style>
     </Window.Resources>   
     <Grid ShowGridLines= "True"  >
         <Grid.RowDefinitions>
             <RowDefinition Height= "50" ></RowDefinition>
             <RowDefinition Height= "20" ></RowDefinition>
             <RowDefinition Height= "2*" ></RowDefinition>
             <RowDefinition Height= "*" ></RowDefinition>
             <RowDefinition></RowDefinition>           
         </Grid.RowDefinitions>
         <Button Grid.Row= "0" >50</Button>
         <Button Grid.Row= "1" >20</Button>
         <Button Grid.Row= "2" >2*</Button>
         <Button Grid.Row= "3" >*</Button>
         <Button Grid.Row= "4" ></Button>
     </Grid>
</Window>
image

 

如果没有设置height,实际上这个height默认被设置为1*, 这里说一下星号(*),解析器会把左右比例值加起来作为分母,把每个比例值做为分子,乘以未被占用的像素数,这样就算出每一个具体的值。

我们假设总高为200,那么上面的2*=(2/(2+1+1))*(200-70)=(1/2)*130=65

另外可以像HTML表格一样使用RowSpan和ColumnSpan

2. StackPanel

控件从左向右或者从上向下排列控件,有一个Orientation枚举,还可以使用HorizontalAlignment和VerticalAlignment来进行对齐。

3. Canvas

使用横纵坐标绝对点定位,很好理解,使用Canvas.Left, Canvas.Top来定位

4. DockPanel

DockPanel使用Dock属性来定位,DockPanel.Dock枚举可取值Left, Top, Right, Bottom四个值,下一个元素会使用剩下方向的全部空间,所以控件摆放顺序会影响布局。Dock布局的一个好处是缩放不会改变相对位置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<Window x:Class= "DeepXAML.MainWindow"
         xmlns= "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x= "http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local= "clr-namespace:DeepXAML"      
         Title= "MainWindow"  Height= "250"  Width= "450" >
     <Window.Resources>
       <Style TargetType= "Button" >
             <Setter Property= "Margin"  Value= "5" ></Setter>
         </Style>
     </Window.Resources>   
     <Grid ShowGridLines= "True"  >
         <DockPanel >
             <Button DockPanel.Dock= "Top" >Top</Button>
             <Button DockPanel.Dock= "Left"  Background= "Yellow" >Left</Button>
             <Button DockPanel.Dock= "Left"  Background= "LemonChiffon" >Left</Button>
             <Button DockPanel.Dock= "Top" >Top</Button>
             <Button DockPanel.Dock= "Right" >Right</Button>
             <Button DockPanel.Dock= "Left" >Left</Button>
             <Rectangle Fill= "Crimson" ></Rectangle>
         </DockPanel>
     </Grid>
</Window>
image

 

5. WrapPanel

这个和StatckPanel类似,就是排不下的控件会新起一行或者一列。

本文转自敏捷的水博客园博客,原文链接http://www.cnblogs.com/cnblogsfans/archive/2011/02/19/1958582.html如需转载请自行联系原作者


王德水

相关文章
|
2月前
|
前端开发 C# 索引
浅谈WPF之UI布局
一个成功的软件,离不开人性化的UI设计,如何抓住用户第一视觉,让用户产生依赖感,合适优雅的布局必不可少。本文以一些简单的小例子,简述WPF中布局 面板 控件的使用,仅供学习分享使用,如有不足之处,还请指正。
38 1
|
8月前
WPF-布局样式练习-Day02-聊天气泡
WPF-布局样式练习-Day02-聊天气泡
129 1
|
8月前
|
前端开发 C# 容器
WPF技术之控件布局
WPF提供了多种布局控件和技术,可以帮助开发人员轻松创建灵活的用户界面。
101 0
WPF技术之控件布局
|
8月前
|
C#
WPF-布局样式练习-Day01
WPF-布局样式练习-Day01
71 0
|
C# C++
C# WPF 左侧菜单右侧内容布局效果实现
原文:C# WPF 左侧菜单右侧内容布局效果实现 我们要做的效果是这样的,左侧是可折叠的菜单栏,右侧是内容区域,点击左侧的菜单项右侧内容区域则相应地切换。 wpf实现的话,我的办法是用一个tabcontrol,修改tabcontrol的样式模板,首先将控件的TabStripPlacement设置为left使tabcontrol的item header部分靠左内容靠右,然后用一个Expander将TabPanel包住实现可折叠菜单效果,最后就是把用到的控件样式修改一下即可。
4563 0
|
算法 C#
WPF/UWP 的 Grid 布局竟然有 Bug,还不止一个!了解 Grid 中那些未定义的布局规则
原文:WPF/UWP 的 Grid 布局竟然有 Bug,还不止一个!了解 Grid 中那些未定义的布局规则 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
1031 0
|
C#
[WPF] VisualBrush 中的布局
原文:[WPF] VisualBrush 中的布局 今天插一篇随笔。说一说上周五遇到的一个布局问题,问题大概是这样的:需要在一个快区域上添加一张透明的背景图片,由于区域较大、并且宽高都不是固定大小,图片较小 所以图片需要居中显示。
920 0
|
前端开发 C#
WPF编游戏系列 之一 布局设计
原文:WPF编游戏系列 之一 布局设计        本系列主要使用WPF和C#编写一个简单的小游戏(暂命名XMarket),意在通过该实例进一步学习和体验WPF,也欢迎广大同仁拍砖交流。言归正传,在编写一个软件前首先要思考软件的结构与布局,图片放在哪,按钮放在哪,都要先设计一下。
624 0
|
C# Windows
WPF布局
转自:http://blog.csdn.net/lisenyang/article/details/18312067 WPF中存在5种布局元素 Grid:网格。可以自定义行和列并通过行列的数量,行高,列宽来调整控件的布局。
1111 0