WPF DockPanel 布局

17 Mar 2025 | 4 分钟阅读

DockPanel 为我们提供了一个区域来相互排列元素。我们可以使用户元素水平或垂直放置。

借助 DockPanel,我们可以使用 Dock 属性轻松地将子元素放置在顶部、底部、右侧、左侧和中心。

DockPanel 用于将内容放置在所有方向上。我们可以将窗口分成一个特定的区域。我们将使用 DockPanel.Dock 属性来决定要使用哪个方向来放置子控件。如果我们没有使用它,则第一个控件将放置在左侧。最后一个控件将覆盖所有空间。

在这里,我们将举一个例子,根据如下所示的 dock panel 布局在屏幕上放置元素

MainWindow.XAML

以上代码的输出将如下图所示

输出

WPF DockPanel Layout

在上面的示例中,如果我们注意到我们为子元素分配了 dock 位置。最后一个子元素会自动获取剩余的整个空间。围绕中心的控件将根据它们的需要占用空间,剩余空间将留给最后一个子元素。右侧子元素比左侧子控件占用更多空间。这仅仅是因为在右侧子元素中添加了额外的字符,并且额外的字符将需要额外的空间。

现在我们将讨论屏幕空间是如何划分的。在这里,如果我们注意到顶部元素没有获取所有顶部空间。这仅仅是因为左侧按钮覆盖了顶部按钮的一部分。在这种情况下,DockPanel 将通过查看它们的标记来决定控件的空间。

在这种情况下,左侧按钮优先,因为此按钮放置在标记的第一位。我们可以通过为子控件分配高度和宽度来轻松更改控件的空间。

在这里,我们将看到另一个示例,其中我们将设置控件的高度和宽度。为此,我们将编写以下代码

MainWindow.XAML

代码的输出如图所示

输出

WPF DockPanel Layout

在上面的屏幕截图中,我们可以看到,顶部和底部控件都优先于左侧和右侧控件。当我们调整窗口大小(变小或变大)时,在这种情况下,我们将看到静态宽度和高度将保持不变。

当我们调整窗口的屏幕大小时,只有中心区域会增加或减少。

LastChildFill

众所周知,默认情况下,DockPanel 的最后一个子元素会获取剩余空间。但是,我们可以使用 LastChildFill 来禁用此行为。

在这里,我们将举一个例子,其中我们将编写代码来禁用 dock 的最后一个子元素,并且还将显示 dock 在同一侧具有多个控件的行为。

为此,我们将编写以下 XAML 代码

MainWindow.XAML

上述代码的输出将如下图所示

输出

WPF DockPanel Layout

在上面的示例中,我们在左侧放置了两个控件,在右侧放置了两个控件,并禁用了 LastChildFill 属性。然后通过这个,我们得到中心空的空格,这在大多数情况下都是需要的。

在这里,我们将以 DockPanel 为例。在这里,我们将借助 XAML 代码在 DockPanel 中添加按钮

MainWindow.XAML

现在我们将在按钮单击事件上进行 C# 编码。

MainWindow.cs

上述代码的输出将如下图所示

输出

WPF DockPanel Layout
下一主题WPF 画布面板