WPF布局面板(例如网格)的过度嵌套计算上是否昂贵?

时间:2011-06-14 19:13:56

标签: wpf performance user-interface xaml layout

我从一位同事那里听说,作为使用Microsoft Expression Blend的设计师,我应该避免使用过多的面板元素嵌套,因为它们的计算成本很高。

例如,我倾向于使用带有网格的标题和自定义状态栏创建主窗口,然后使用顶部面板并在其中放置网格,如果我在已经网格化的顶部面板上的矩形内有消息,我创建还有另一个网格等。

作为一个非常面向布局的设计师(无论屏幕尺寸如何,他都希望最有效地使用每个屏幕)我知道这是考虑绝对控制和灵活性的最佳方式,这会阻止窗口调整大小“不可预测“方式; oP

... BUT ......我的这位朋友说,如果你有五个网格互相嵌套,如果你把鼠标放在它们上面,你会产生五个鼠标事件,这是很昂贵的。

另外,如果由于在实际渲染之前太多容器要求子尺寸而进行太多计算,那么它也会很昂贵。

我之前有过使用PyGtk的经验,我必须说我的所有脚本都使用了很多布局面板,甚至调整窗口的大小在我看来也不会特别昂贵,除非我有一些复杂的画布绘图需要重新计算。

有没有人有任何经验或对此有所了解?

非常感谢您的阅读

2 个答案:

答案 0 :(得分:7)

对此没有直接的答案,但显然你参与布局的元素越多,窗口的the measure and arrange phases就越长。根据您使用哪种Panel类型的功能,它可能会或多或少成本,但可以肯定的是,您使用的越多,布局计算期间的开销就越大。您可以通过reading that entire MSDN article了解有关布局系统工作原理的更多信息。

最后,除非你发疯,否则这不会成为一个问题。要了解它是否会导致您的应用出现问题,我建议您使用the WPF Performance Suite进行一些性能测试。

答案 1 :(得分:4)

不会那么担心,到目前为止我还没有问题。应用一些常识,在哪种情况下需要哪些面板?你真的需要另一个小组来实现你的目标吗?

关于这个问题的MSDN文章可能会引起关注,因为它解释了一些不直接的事情:Optimizing Performance: Layout and Design