【发布时间】:2012-03-22 12:20:30
【问题描述】:
我列出了所有有助于提高具有大量控件的非常复杂的应用程序的性能的所有内容。如果你想添加你的,欢迎!
- 如果你知道控件的大小,去掉 Auto 并输入真实值,这样父级就不必解析所有子级来检查他需要的大小
- 如果元素不需要交互,则设置参数 IsHitTestVisible=False
- 冻结所有可以冻结的对象
- 使用静态资源而不是动态资源
- 不要使用 Ellipse 对象,将 Ellipse 转换为 Path
- 如果可以使用 TextBlock,请不要使用 TextBox 或 Label
- 尽可能使用 Canvas 而不是 Grid
- 没有流文档
- 虚拟化!!虚拟化StackPanel 而不是 StackPanel
- 不要使用 List,ObservableCollection 更快
- 使用绘图库,比形状库更快
- 检查您的绑定!如果绑定不起作用,它可能会很慢
- 不要使用 Visibility.Hidden,尽可能使用 Visibility.Collapsed
- DependencyProperty 比 INotifyPropertyChanged 快 3 倍
- StreamGeometry 比 PathGeometry 更快
- 完成后清除事件处理程序!
- 不要使用对象的不透明度属性,如果可以的话,使用他的颜色不透明度
- 检查您的应用程序是否为硬件渲染(第 2 层)
- 尽可能减小图像的大小/质量
- 渲染图像比渲染矢量快得多!
我使用的工具:
- WPF 检查员
- 窥探
- WPFPerf 套件
- Visual Studio 分析器
- .NET 的 CLR 分析器
【问题讨论】:
-
恐怕不太适合stackoverflow之类的问答网站。
-
这不是一个问题,如果有人在 WPF 中寻求有关性能的帮助,这是一个答案。我一直在寻找这样的主题大约一个月,如果我能在我所有的测试和研究之后帮助别人,我会很高兴
-
您应该刚刚发布了一个单行问题并将其发布为答案,这样它就不会被关闭......无论如何,tx 的提示
标签: wpf performance blend