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