WPF中的StackPanel、DataGrid和DockPanel对比分析

4
我需要动态生成一个“盒子”(例如2x2、3x3等)的方阵,每个盒子包含一个文本框和一个按钮。这些盒子和文本也会根据窗口大小进行调整。我应该使用stackPanel、datagrid还是dockpanel来解决这个问题?它们各自的优缺点是什么?感谢任何建议。
开发工具为WPF和VS2010。
3个回答

9

我会使用网格控件来解决这个问题。如果您告诉它做到,网格内的列和行将根据网格的大小自动调整大小。此外,网格会自动填充它们放置在其中的区域,这似乎符合您的要求。

堆栈面板并不是很灵活。它们基本上只是将一个项目放在另一个项目旁边,没有自动大小调整功能。

如果您有应该固定在一侧的内容以及一些其他中心内容,则停靠面板是很好的选择。


6

1
UniformGrid 继承自 Panel,就像 Grid 一样,可以包含任意数量的子元素。 - Nicolas Repiquet

3
Stackpanels很有用,当您希望一定数量的项目彼此保持在同一行时。使用非常简单且在动态添加项目时非常有效,但其简单性意味着它实际上没有任何调整大小的功能。
Dockpanels很有用,当将多个不同的项目放置和组织到窗口中时,特别是当将项目锚定到顶部、底部、左侧、右侧并适合剩余空间的中心时(我最近发现它们与扩展器一起使用时非常方便)。没有明显的缺点,可能对您非常有效。
如果您不需要动态更改布局,则建议使用网格控件,因为您可以将网格分成所需的矩阵。 在每个边上使用星号(*)意味着所有框将均匀重新调整大小以适应您拥有的窗口。 功能有限,但根据您的要求,网格可以涵盖它。
有关布局的有用教程可在此处找到。

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