Разница между стилями и шаблонами управления - PullRequest
5 голосов
/ 24 февраля 2010

Я хотел бы знать, в чем различия между стилем (для элемента управления) и шаблоном элемента управления. С уважением,

Гонсало

Ответы [ 2 ]

6 голосов
/ 24 февраля 2010

Стиль управляет отдельными свойствами элемента управления. Например, стиль кнопки может сказать: «Для каждой кнопки используйте этот фон». Стиль изменяет одно свойство элемента управления.

Шаблон элемента управления фактически обрабатывает то, как элемент управления отображает свои связанные данные. Вместо того, чтобы говорить «Я хочу переопределить свойства элемента управления», вы собираете вместе другие меньшие элементы управления в один элемент управления, который может представлять различные представления связанных данных.

Ранее в WinForms, если вы хотели написать настраиваемое поле со списком (скажем, рядом с каждым элементом), вы должны были наследовать от элемента управления ListView и переопределить методы рисования. Это включало массу экспериментов - огромную боль. С помощью шаблонов WPF вы можете использовать XAML для создания меньших элементов управления и привязки их к различным свойствам родительского элемента управления. Вы фактически определяете визуальное дерево для элемента управления.

См. эту статью для подробного объяснения Чарльза Петцольда.

3 голосов
/ 22 декабря 2012

Представьте, что вы управляете домом.

A Style концептуально похож на установку нового ковра и покраску стен. Сам дом все тот же, но внешне он другой.

A ControlTemplate - это эквивалент сбивания стены или добавления консерватории. Фактическая структура дома изменилась.

Используйте Style, если вы хотите изменить внешний вид элемента управления E.G. это цвет фона или толщина его границы.

Используйте ControlTemplate, когда вам нужно изменить базовую структуру элемента управления. Это полезно, когда вы хотите изменить макет определенных аспектов элемента управления. Хорошим примером является эта статья, в которой шаблон TabControl повторно оформляется в виде навигатора из Microsoft Outlook.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...