面板是WPF裡其中一个很重要的控件。面板扮演著装载其他控件的容器的角色,同时也控制著页面和视窗的佈局。由于一个视窗只允许一个子控件,因此面板经常会被使用于分隔空间,这样每个空间就会有一个控件或者面板。
面板有多种不同样式,每种样式都有他各自的布局和控件处理方式。因此,要实现你需要的功能和布局,必须要选择正确的面板样式,这对初学WPF编程者可能会有些困难。下一节将会对每种面板进行简要的介绍,以便提供应用面板的基本概念。接下来,再对每种面板进行详细的了解。
这是一种简单的面板,与WinForms应用处理方式类似。该面板可以设置每个子控件的坐标,容许完全的布局控制。但是该面板不够弹性,因为你必须手动移动子控件以保证他们按照你需要的位置和方式排列。推荐在你想要完全自己布置子控件时选用。
WrapPanel 面板将每个子控件按照水平(默认方式)或者竖直的方式满布一行或一列,让后再布置下一行或者下一列。当你需要水平或者竖直排列子控件且能自动滚动进入下一行(列)时采用他。
StackPanel 的行为与 WrapPanel 很相似,但与 WrapPanel 会包装过长的子控制项行为不同,它会尽量延长自己。与WrapPanel类似,它的方向可以是水平或垂直,但每个项目拉伸占满全宽或全高,而不是基于最大的项目调整宽度或高度。当你想要一连串控制项尽可能填满空间而不是被包装,请使用 StackPanel 。
DockPanel允许您将子控件停靠在顶部、底部、左侧或右侧。默认情况下,如果没有给定特定的dock位置,最后一个控件将填充剩余的空间。您可以使用Grid面板实现相同的操作,但是对于更简单的情况,DokPanel将更易于使用。每当需要将一个或多个控件停靠到一个侧边时,使用DockPanel,比如将窗口划分为特定区域。
Grid可能是面板类型中最复杂的。Grid可以包含多行和多个列。您为每行定义一个高度,为每列定义一个宽度,以像素的绝对数量、可用空间的百分比或自动方式,其中行或列将根据内容自动调整其大小。当其他面板不适合使用时, 使用Grid,例如,当您需要多个列并且经常与其他面板组合时。
UniformGrid就像Grid一样,具有多行和多列的可能性,但有一个重要的区别:所有行和列将具有相同的大小!当您需要网格行为而不需要为行和列指定不同的大小时,使用此方法。