Встроенные стили и шаблоны
Windows Presentation Foundation (WPF) предоставляет Style объекты и объекты шаблона (FrameworkTemplate подклассы) как способ определения внешнего вида элемента в ресурсах, так что они могут использоваться несколько раз. По этой причине атрибуты в XAML , которые принимают типы Style и FrameworkTemplate почти всегда ссылки на ресурсы в существующие стили и шаблоны, а не определения новых.
Ограничения встроенные стили и шаблоны
В XAML, свойства стиля и шаблона с технической точки зрения можно задать одним из двух способов. Можно использовать синтаксис атрибутов для ссылки на стиль, который был определен в ресурсе, например <
объектStyle="{StaticResource
myResourceKey}" .../>
. Или можно использовать синтаксис элемента свойства для определения встроенный стиль, например:
<
object >
<
object .Style>
<
Style
.../>
</
object .Style>
</
object >
Использование атрибута является гораздо более распространенным. Стиль, определенный встроенным образом и не определенный в ресурсах, обязательно распространяется только на содержащий элемент и не может повторно использоваться так же легко, так как он не имеет ключа ресурса. В общем более универсален и полезен стиль, определенный ресурсом и соответствующим общим Windows Presentation Foundation (WPF) программирования модели принцип разделения программной логики в коде, от проектирования в разметке.
Обычно нет причин для задания встроенный стиль или шаблон, даже если вы планируете использовать этот стиль или шаблон в этом расположении. Большинство элементов, которые может принимать стиля или шаблона, также поддерживают свойство content и модель содержимого. Если вы используете только любое логическое дерево создавать с помощью стилей или шаблонов один раз, было бы даже проще заполнить это свойство содержимого с помощью эквивалентных дочерние элементы в прямой разметки. Это будет полностью обойти механизмы стиля и шаблона.
Других синтаксисов, включаемые расширения разметки, которые возвращают объект возможны также стили и шаблоны. Два таких расширения, имеющие возможные сценарии включают в себя TemplateBinding и Binding.