当WPF应用程序的XAML包含嵌套Grid
,StackPanel
,DockPanel
和其他容器的批次时,渲染性能是否会严重降低?
答案 0 :(得分:2)
当您创建一个非常复杂的UI,包含大量嵌套对象和包含大量元素的DataTemplate时,您可以严重影响App的性能,因为UI树越大,渲染所需的越大,以及框架无法在30FPS中呈现,您将开始看到性能下降。你应该使用你需要的最轻量级的面板,以避免你不需要的额外逻辑。以下是一些性能提示,以便让您更快地使用App:
http://msdn.microsoft.com/en-us/library/bb613542(v=vs.110).aspx
答案 1 :(得分:2)
答案真的很简单"是"。更多的东西将使用更多的处理器时间。 SURPRISE!
在WPF的情况下,元素被排列成分层场景图。为此图表添加深度级别会比将兄弟节点添加到现有元素更慢。你应该始终努力保持低图的深度。请考虑使用Grid
而不是嵌套StackPanel
s。
那么为什么深度比原始元素数更重要?嗯,深度通常意味着;
关于遮挡,BitmapCache
类可以帮助很大!
答案 2 :(得分:0)
WPF使用MeasureOverride
和ArrangeOverride
方法来呈现UIElements。 MeasureOverride
根据父控件的宽度和大小测量UIElements的宽度和大小。 ArrangeOVerride
方法将根据这些度量在运行时安排UIElements。这些方法经过优化,可以提高性能,不会导致任何渲染性能问题。
但是应该有一种容量,这些方法可以在最短的时间内处理UIElements。如果超过此限制,则应存在性能问题。
例如:假设一辆自行车可以携带2个人。如果有5个人超载会发生什么:)
Jet Brains .Trace是一种分析性能问题的工具,有助于查看这两种方法