03_布局
作者:互联网
WPF用不同的容器(container)来实现布局。布局包括两个阶段:测量(measure)阶段和排列(arrange)阶段。
在测量阶段,容器遍历所有子元素,并询问子元素它们期望的尺寸。在排列阶段,容器在合适的位置放置子元素。
布局容器不能提供任何滚动支持,滚动时由特定的内容控件-ScrollViewer-提供的。
布局容器
所有WPF布局容器都派生自 System.Windows.Controls.Panel 抽象类的面板,并提供了三个公共属性。
名称 | 说明 |
---|---|
Background | 面板的背景色。如果向接收鼠标事件必须设置为非空值 |
Children | 面板中存储的条目集合 |
IsItemsHost | 显示与ItemsControl控件关联的项,该属性值为 true |
StackPanel
StackPanel 面板在单行或单列中以堆栈形式放置其子元素。
默认按自上而下的顺序排列元素,使每个元素的高度适合它的内容。通过设置 Orientation 属性也可用于水平排列元素。
对齐方式
<StackPanel>
<Label BorderThickness="1" BorderBrush="Red">lebel 1</Label>
<Button HorizontalAlignment="Left">Button 1</Button>
<Button HorizontalAlignment="Right">Button 2</Button>
<Button HorizontalAlignment="Center">Button 3</Button>
<Button >Button 4</Button>
</StackPanel>
上面代码中有个垂直方向的 StackPanel 面板 - VerticalAlignment 属性不起作用,因为所有元素的高度都自动调整为刚好满足各自需求,但 HorizontalAlignment 属性决定了各个元素在行的什么位置。
WrapPanel
这两个布局容器通过不同的布局行为对 StackPanel 面板进行补充。
与 StackPanel 面板类似,WrapPanel 面板实际上主要用来控制用户界面中一小部分的布局细节,并非用于控制整个窗口布局。
WrapPanel 面板是唯一一个不能通过灵活使用 Grid 面板代替的面板。
DockPanel
DockPanel 提供停靠功能。停靠的顺序不同会导致不同的结果。
Grid
Grid面板是 WPF 中功能最强大的布局容器,会把空间划分成网格。
分隔窗口
分割条由 GridSplitter 类表示,能将窗口的一部分与另一部分分离的可拖动分割器。
- GridSplitter 必须放在单元格中。推荐预留一列或一行专门用于放置 GridSplitter ,并设置 Height或Width 属性值为 Auto
- GridSplitter 总是改变整行或整列的尺寸。
- 对于竖直分割条需将 VerticalAlignment 属性设置为 Stretch 并将Width设置为固定值。
Canvas
Canvas 面板允许使用精确的坐标放置元素。Canvas 面板是最轻量级的布局容器。
Z 顺序
如果canvas面板中由多个相互重叠的元素,可设置 Canvas.ZIndex 附加属性来控制它们的层叠方式。
Border控件
Border控件不是布局面板,经常与布局面板一起使用。Border 只能包含一段嵌套内容,并为其添加背景或在其周围添加边框。
名称 | 说明 |
---|---|
Background | 设置边框中所有内容的背景 |
BorderBrush BorderThickness | 边框颜色和宽度 |
CornerRadius | 使边框具有雅致的圆角 |
Padding | 在边框和内部的内容之间添加空间 |
我的公众号
标签:03,元素,容器,StackPanel,布局,面板,属性 来源: https://www.cnblogs.com/jqwang/p/15483211.html