堆栈面板或网格哪一个是最可取的

时间:2011-03-15 05:29:32

标签: .net silverlight windows-phone-7 stackpanel

我听说使用Stack面板的UI Design比Grids更具推广性。那是否存在任何事实。我通常使用Grid来设计我的UI,最近在一个文档中我读到Grid需要更多的时间来渲染而不是堆栈面板;所以我对此非常困惑..请给我更多关于此的信息..(WP7开发)

6 个答案:

答案 0 :(得分:15)

Grid中,元素可以相对于彼此定位,可以自由地移动(如果开发人员想要这样做)。除非明确指定,否则Grid不会强制执行特定定位。在StackPanel中,控件显然是堆叠的。因此,如果在Grid中您将在单个序列中添加两个控件,那么这些控件将重叠。在StackPanel中,控件将一个接一个地放置,无论是水平还是垂直。

通常,在GridStackPanel之间进行选择时,不存在性能开销。 Grid控件的一个好处是可以明确定义行和列,这最终会导致创建更复杂的布局。每个都有它的位置,通常不可互换。

答案 1 :(得分:3)

Grid和Stackpanel都有自己的位置,这取决于您的UI要求。听起来你过早地进行了优化。

我会实现最适合需要的面板,然后担心以后的性能,如果这是一个问题。

答案 2 :(得分:2)

只想评论SteveChadbourne,但不知道该怎么做。

请参阅http://www.codeproject.com/KB/showcase/WP7-Performance.aspx(MonthCalendar)以获取包含126个元素的网格示例,这些元素在大约2秒内加载。如果你说你的60个控件在25秒内加载,那么它不是所用容器的问题,而是你控件的问题。

在这种情况下,当然,UI虚拟化会有所帮助。但总的来说,Grid和StackPanel之间应该没有重要区别。网格应该慢一点,但差异是不可测量的。

还有更重要的事情需要优化 - 模板,绑定等。上面提到的文章描述了随后导致MonthCalendar控制速度提高5倍的优化步骤。程序员会惊讶于高级Silverlight工具效率低下。

答案 3 :(得分:1)

根据最近的经验,列表框是最好的容器类。主要的好处是速度,因为它在内部使用虚拟化堆栈面板。

我尝试了网格和堆栈面板,两者都需要25秒才能显示60个用户控件。切换到列表框后,这下降到10秒。

如果您需要额外定位,请在每个列表项模板中使用网格。

答案 4 :(得分:1)

Grid可以选择指定行索引或列索引,以便可以相应地对元素进行排序。如果需要对页面元素进行更多自定义,请使用grid.Otherwise stack panel就足够了.Grid具有行定义和列定义所以它有比堆栈面板更多的对象。对于我的测试,我没有看到最终用户可以看到的任何性能差异

答案 5 :(得分:0)

Grid和Stackpanel是容器,因此它们包含多个子项。区别在于它们包含元素的方式。

网格中的元素以矩阵形式存储,或者您可以说表格形式。您可以定义columndefinitions和rowdefinitions,还可以在特定的行和列中访问和存储元素。

但是在堆栈面板中,元素以堆栈格式存储。一个接一个因此它可以是垂直的也可以是水平的。

因此,根据您的要求,您可以满足大部分要求。