我在我的WP7应用程序中有一个动态构建的页面。我创建并添加了60个用户控件到网格,大约需要5秒钟。我需要找到一种加快速度的方法。
流程如下:
第4步是花时间。我猜我每次都这样做,视觉树就会被重建。
在完成子集合更新后,有没有办法告诉网格只重建可视树?
或者还有另一种更好的方法吗?
UPDATE:WP7 Toolkit中的List Picker控件导致了问题。当我改为一个时,我自己写了在手机上显示页面的时间从25秒减少到1秒。
答案 0 :(得分:1)
/您的目标是尝试减少更新visualtree的次数。
一些建议:
最适合您的技术取决于您实际添加到UI的内容。您需要进行测试,看看哪种方法最适合您。
答案 1 :(得分:1)
如果UI虚拟化(即ListBox)有帮助,则问题必须出在您的控件中。模板,绑定,转换器,使用Xaml而不是C#代码,不必要的Xaml构造(例如元素名称),过于复杂的可视树(例如不需要的网格)等 - 这些都会降低性能。
如果您怀疑增量可视树重建(我不这么认为),那么只需调试MeasureOverride / ArrangeOverride方法。
我猜this article可能会给你更多提示。我在那里描述了我们如何优化类似的复杂控件 - MonthCalendar有126个子控件。控制负载时间减少约。 5×!