Вопросы производительности — VisualState и переключение видимости с помощью AttachedProperty

В настоящее время у нас есть визуальный элемент в ControlTemplate элемента управления, видимость которого привязана к присоединенному свойству и который устанавливается в элементе управления при выполнении определенного условия. Когда присоединенное свойство имеет значение true, мы делаем элемент видимым (граница) и сворачиваем его, когда значение равно false.

Другой подход заключается в изменении состояния элемента управления путем добавления к нему некоторых настраиваемых состояний.

Принимая во внимание такие сценарии, как сетка (например, RadGridView от Telerik и т. д. — в GridViewCell устанавливается свойство вложения, чтобы сделать один из его элементов ControlTemplate видимым/изменение состояния ячейки), где загружаются огромные объемы данных, какой метод показывает больше представление?


person Harsha    schedule 10.11.2013    source источник


Ответы (1)


Способ прикрепленного имущества определенно в порядке. Если вы хотите создать настраиваемые визуальные состояния, вы, скорее всего, в конечном итоге сделаете то же самое — вместо создания прикрепленного свойства и присоединения к GridViewCell вы расширяете элемент управления, чтобы иметь то же свойство и новое визуальное состояние, в котором вы устанавливаете Visibility от Border до Collapsed, и вы запускаете состояние, когда выполняется условие свойства.

Контроллер RadGridView имеет встроенную виртуализацию, думаю о производительности можно вообще не беспокоиться. Но я предполагаю, что создание прикрепленного свойства может быть немного проще, в то время как расширение элемента управления может быть немного более гибким — скажем, если вы хотите сделать тяжелую анимацию в новом состоянии, вы можете легко сделать это в Blend.

person Justin XL    schedule 10.11.2013