Seb*_*Seb 5 wpf performance controls resize window
我有一个WPF窗口,其中包含一个花式图像,大约有200个控件(从按钮派生),所有这些都使用我的5个模板之一(路径,阴影效果等).同意,这是一个沉重的窗口.我可以忍受这一点.
我的问题来自调整窗口大小.最大化/恢复大约需要1-2秒,但手动拖动左下角会导致系统挂起约5-10秒.在该延迟中,窗口为黑色并包含部分剩余部分,直到显示最终结果.它看起来业余和说,我不能忍受.
远程连接:使用远程帐户,我发现窗口调整大小总是需要1-2秒,但在拖动窗口边框时不会绘制"中间"阶段.结果像我期望的那样快活.
我的结论是:调整大小期间的重绘是瓶颈.
不可避免的问题是:如何在重新调整大小之前阻止重绘窗口?
提前感谢任何想法......
@Seb:我开始认为 WPF 并不是为一次超过 2-3 个控件的界面而设计的
Visual Studio 2010 和 Expression Blend 应该是很好的反例。尽管 Visual Studio 有时会冻结,但瓶颈绝对不在 WPF 渲染中。
@Seb:不可避免的问题是:如何防止重绘窗口,直到调整大小完成?
只需将窗口的内容可见性设置为Visibility.Collapsed
调整大小/最大化之前,然后使其可见即可。虽然我认为你问错了问题。这是正确的
如何使我的控件测量/排列速度极快?
要回答这个问题,您应该查看您的代码。也许您在测量/排列算法中大量使用依赖属性?或者也许您选择了错误的面板(例如,Grid 比 Canvas 慢)?或者也许......我在这里停止猜测:)。
顺便说一句,最好在分析器下启动您的应用程序并证明瓶颈,而不是假设它可能在哪里。检查Eqatec Profiler,它是免费的但足够强大。VS 2010 还提供了很好的分析功能,尽管它远非免费。您可能想检查WPF Performance Suite。
希望这可以帮助。
归档时间: |
|
查看次数: |
3944 次 |
最近记录: |