DataTrigger против привязки данных с точки зрения производительности преобразователя - PullRequest
16 голосов
/ 01 апреля 2011

У меня есть большое количество стилей, определенных для моей сетки (цвета ячеек на основе состояния и т. Д.). Прямо сейчас я использую DataTriggers, чтобы установить соответствующие цвета. Я стремлюсь улучшить производительность своего приложения и думал, что большое количество стилей может вызывать замедление (из-за постоянно меняющихся данных и необходимости пересчета / обновления стилей). Что лучше использовать привязку данных с преобразователями вместо DataTriggers?

Если цель может быть достигнута с помощью любого из методов, есть ли разница в производительности? Я не знаком с тем, что происходит за кулисами, поэтому я не уверен.

1 Ответ

14 голосов
/ 01 апреля 2011

В этот эпизод подкаста Hanselminutes , гость Лоран Бюньон (создатель MVVM Light), описывает, что с использованием конвертеров наблюдается снижение производительности.Он указывает, что это почти всегда незначительно в настольных приложениях, но в приложениях WP7 рекомендуется, чтобы модели представления выставляли такие вещи, как кисти, вместо того, чтобы сильно полагаться на преобразователи, особенно если речь идет о виртуализации списков, в этом случае прокрутка вызовет многоВызовы преобразования.

Возможно, что подобное происходит в вашем сценарии, просто учитывая количество триггеров (или преобразований, если вы сделали это переключение).

В качестве доказательстваВ качестве концепции вы можете рассмотреть обертывание вашей модели представления в «WPF Viewmodel», которая предоставляет сами цвета и другие специфичные для WPF значения, а не какое-либо значение, из которого цвета могут быть определены с помощью триггеров, вызывающих время выполнения, и IValueConverters.После этого вы сможете напрямую связываться с этим и не использовать ни триггеры, ни конвертеры.Мне было бы интересно услышать результаты.

...