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

标签 wpf performance user-interface xaml layout

伙计们

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

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

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

但...
...我的这位 friend 说,如果你有五个嵌套在另一个网格中的网格,如果你将鼠标移过它们,你会生成五个鼠标事件,这是代价高昂的。

此外,如果由于过多的容器在实际渲染之前要求子级尺寸而进行过多计算,则成本也会很高。

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

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

非常感谢阅读

最佳答案

对此没有直接的答案,但显然参与布局的元素越多,the measure and arrange phases 的时间就越长。将要采取的窗口。根据您使用的面板类型的哪些功能,它的成本可能更高或更低,但可以肯定的是,您使用的越多,布局计算期间的开销就越多。您可以通过 reading that entire MSDN article 了解有关布局系统如何工作的更多信息.

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

关于wpf - WPF 布局面板(例如网格)的过度嵌套在计算上是否昂贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6348772/

相关文章:

wpf - 如何在 WPF 的日历控件中突出显示可用日期?

php - in_array() 性能优化

c++ - 较大的对象复制速度是否较慢(C++)?

Java swing gui内存分配

Android 用户界面问题。实现指导

c# - 为给定类型的所有控件设置默认属性

wpf - 由于 Windows 7 UAC,将 SDF 数据库从应用程序文件夹移动到用户文件夹?

c# - 合适的 ObservableCollection

.net - 什么会导致调用 Web 服务出现两分钟的延迟?

c - gtk 处理程序有错误数据