ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

03_布局

2021-10-29 20:36:21  阅读:135  来源: 互联网

标签:03 元素 容器 StackPanel 布局 面板 属性


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有