我注意到在许多WPF应用程序示例中,Grid
控件被用于几乎任何东西,即使只有1列或1行的最简单的事情也是如此。
此外,WPF模板以空白格子开始。
对我来说,使用StackPanel
或DockPanel
更为简洁,更易于维护(考虑稍后添加行并必须将所有其他行加1)
那么,为什么Grid
更好,或者我错过了什么?
我注意到在许多WPF应用程序示例中,Grid
控件被用于几乎任何东西,即使只有1列或1行的最简单的事情也是如此。
此外,WPF模板以空白格子开始。
对我来说,使用StackPanel
或DockPanel
更为简洁,更易于维护(考虑稍后添加行并必须将所有其他行加1)
那么,为什么Grid
更好,或者我错过了什么?
Grid
使得能够将内容大小调整到包含它的空间,而不需要为容器提供明确的大小。 面板控件无法实现这一点。没有漏掉任何东西。我的应用程序中有相当多的网格,但不一定作为顶级元素,而且绝对不像你描述的那样。
可能很多人并没有意识到他们可以删除初始网格,而是将自己的控件放入网格中。
我发现对于更为复杂的窗口,将其分解成相对独立的功能区域(在移动和大小方面)更容易。网格允许这些区域在单个面板中共存,并且允许它们定位而不考虑其他控件的位置(在某种程度上)。
例如,在我目前正在工作的项目中,我有一个窗口将成为一个发货管理器。我想要三个列表视图(发货、包裹、物品),我使用了一个带有两列的网格控件;一列是包裹列表和一个网格拆分器,另一列是嵌套网格,其中包含另外两个列表和一个网格拆分器。
我看到很多设计师将他们的窗口分解成这样的区域,如果不使用网格,就无法正常工作,因为没有离散的“单元格”可以间接地存放项目。相当多的程序窗口采用了这种设计,所以我猜当他们开会并询问默认容器面板应该是什么时,基于这个事实,网格成为了选择。
Cory