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