Я занимаюсь разработкой приложения WPF, в котором одновременно отображается много элементов управления пользовательского интерфейса, и это замедляет анимацию и т. Д. Есть ли способ предотвратить это?
Не зная больше о том, как вы загружаете элементы управления, трудно сказать. Однако вот мои советы и подсказки:
Не используйте ObservableCollection, если вы не изменяете содержимое коллекции на лету. Если вы можете получить список, используйте это. Мы использовали ObservableCollection как кучу новичков повсюду; это значительно ускорило наше приложение.
Не вызывайте PropertyChanged, если свойство действительно не изменилось - сравните с предыдущим свойством, если вам нужно.
Рассмотрим удобство использования приложения. Если показ того, что множество элементов управления одновременно сбивает с толку ПК, это, вероятно, также сбивает с толку и пользователя. Можете ли вы спрятать некоторые из них в расширитель? Размещать их на разных вкладках? Есть ли способ показать меньше информации, которая может сделать приложение более интуитивно понятным?
Введите код / добавьте временную запись в журнал и убедитесь, что это действительно рендеринг, вызывающий проблему. Затем рассмотрите расчеты и отношения, происходящие за сценой (см. Первые два совета о том, что вы можете изменить).
Посмотрите на эту статью о настройке производительности WPF Пола Харрингтона из команды разработчиков VS2010. В нем есть несколько полезных советов по производительности WPF и перечислены инструменты, которые использовали эти ребята.
MSDN имеет несколько рекомендаций: msdn wpf perrformance
А также мой любимый новичок Блог: Wpf Tutorial
Используйте виртуализацию везде, где это возможно -
http://bea.stollnitz.com/blog/?p=338
http://bea.stollnitz.com/blog/?p=344
http://bea.stollnitz.com/blog/index.php?s=Virtualization+wpf
http://www.kirupa.com/net/ui_virtualization_pg1.htm
Добавьте меньше элементов управления, используйте меньше анимации или получите лучшую видеокарту.:)