首页 > 代码库 > WPF性能优化的一些建议

WPF性能优化的一些建议

  1. 尽量多使用Canvas等简单的布局元素,少使用Grid或者StackPanel等复杂的,减小开销。
  2. 少用Margin Padding尤其避免嵌套使用。
  3. 在自定义控件,尽量不要在控件的ResourceDictionary定义资源,而应该放在Window或者Application级。因为放在控件中会使每个实例都保留一份资源的拷贝。
  4. 自定义控件尽量从轻量级的控件继承。
  5. 需要绑定的属性设置为DependencyProperty的依赖项属性效率要高很多,不要自己写继承自INotifyPropertyChanged的属性:http://www.codeproject.com/Articles/62158/DependencyProperties-or-INotifyPropertyChanged
  6. 尽量使用Static Resources不用DynamicResource。
  7. 文字少的时候用TextBlock或者label,长的时候用FlowDocument。
  8. 绑定的字符串用Textblock不用label。
  9. 如果正在绘制的内容需要频繁地重新绘制,考虑设置各Uelement对象的CacheMode="BitmapCache"。
  10. 尽量不使用DropShadowEffect投影效果。
  11. 避免使用 Run 来设置文本属性:(MSDN)
    1. <TextBlock>  <Run FontWeight="Bold">Hello, world</Run></TextBlock><TextBlock FontWeight="Bold">  Hello, world</TextBlock> 
  12. 尽量不要过分依赖使用值转换器。
  13. 尽量少使用第三方类库。
  14. 计时尽量使用DispatcherTimer替代Timer。
  15. 尽量不要设置控件Opacity属性而用Visibility。