WPF:为什么Grid控件备受青睐?

5

我注意到在许多WPF应用程序示例中,Grid控件被用于几乎任何东西,即使只有1列或1行的最简单的事情也是如此。

此外,WPF模板以空白格子开始。

对我来说,使用StackPanelDockPanel更为简洁,更易于维护(考虑稍后添加行并必须将所有其他行加1)

那么,为什么Grid更好,或者我错过了什么?

4个回答

3
两个词:星星缩放。 Grid使得能够将内容大小调整到包含它的空间,而不需要为容器提供明确的大小。 面板控件无法实现这一点。

1
同意,但你只需要它有时候,而不是总是需要。而且通常可以使用 DockPanel 达到相同的效果。 - Eduardo Molteni
可能有类似的效果。但是,如果您想将窗口分成两半,那么使用DockPanel实际上无法做到这一点。除非您做一些不应该做的事情,比如绑定到父级的ActualSize属性。 - Robert Rossney

2
我认为 Grid 成为默认元素的部分原因是它更适合设计师使用。在 Grid 中,可以在单个 Grid "单元格" 中放置多个元素,这使得具有自由布局的设计师具有与 Canvas 相同的灵活性,但仍然具有 Grid(以及其他更好的布局控件,如 StackPanel 和 DockPanel)的自动布局功能。

1

没有漏掉任何东西。我的应用程序中有相当多的网格,但不一定作为顶级元素,而且绝对不像你描述的那样。

可能很多人并没有意识到他们可以删除初始网格,而是将自己的控件放入网格中。


1

我发现对于更为复杂的窗口,将其分解成相对独立的功能区域(在移动和大小方面)更容易。网格允许这些区域在单个面板中共存,并且允许它们定位而不考虑其他控件的位置(在某种程度上)。

例如,在我目前正在工作的项目中,我有一个窗口将成为一个发货管理器。我想要三个列表视图(发货、包裹、物品),我使用了一个带有两列的网格控件;一列是包裹列表和一个网格拆分器,另一列是嵌套网格,其中包含另外两个列表和一个网格拆分器。

我看到很多设计师将他们的窗口分解成这样的区域,如果不使用网格,就无法正常工作,因为没有离散的“单元格”可以间接地存放项目。相当多的程序窗口采用了这种设计,所以我猜当他们开会并询问默认容器面板应该是什么时,基于这个事实,网格成为了选择。

Cory


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接