Встроенные стили и шаблоныInline Styles and Templates

Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) предоставляет объекты Style и объекты шаблонов (FrameworkTemplate подклассы) как способ определения внешнего вида элемента в ресурсах, чтобы их можно было использовать несколько раз.provides Style objects and template objects (FrameworkTemplate subclasses) as a way to define the visual appearance of an element in resources, so that they can be used multiple times. По этой причине атрибуты в XAMLXAML, которые принимают типы Style и FrameworkTemplate почти всегда делают ссылки на ресурсы существующими стилями и шаблонами, вместо того, чтобы определять новые встроенные.For this reason, attributes in XAMLXAML that take the types Style and FrameworkTemplate almost always make resource references to existing styles and templates rather than define new ones inline.

Ограничения встроенных стилей и шаблоновLimitations of Inline Styles and Templates

В Язык XAMLExtensible Application Markup Language (XAML)свойства стиля и шаблона технически могут быть заданы одним из двух способов.In Язык XAMLExtensible Application Markup Language (XAML), style and template properties can technically be set in one of two ways. Синтаксис атрибутов можно использовать для ссылки на стиль, определенный в ресурсе, например <objectStyle="{StaticResourceмиресаурцекэй}" .../>.You can use attribute syntax to reference a style that was defined within a resource, for example <objectStyle="{StaticResourcemyResourceKey}" .../>. Или можно использовать синтаксис элемента свойства для определения встроенного стиля, например:Or you can use property element syntax to define a style inline, for instance:

объект < >< object >

объект < .Style>< object .Style>

< Style``.../>< Style .../>

объект </ .Style></ object .Style>

объект </ ></ object >

Использование атрибута является гораздо более распространенным.The attribute usage is much more common. Стиль, который определяется встроенным и не определен в ресурсах, должен принадлежать только к содержащему элементу, и его нельзя повторно использовать, так как он не имеет ключа ресурса.A style that is defined inline and not defined in resources is necessarily scoped to the containing element only, and cannot be re-used as easily because it has no resource key. В общем, определяемый ресурсом стиль является более гибким и полезным, и он более удобен в использовании общего принципа Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) модели программирования, который отделяет логику программы в коде от разработки в разметке.In general a resource-defined style is more versatile and useful, and is more in keeping with the general Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) programming model principle of separating program logic in code from design in markup.

Обычно нет причин для встроенного стиля или шаблона, даже если вы планируете использовать этот стиль или шаблон в этом месте.Usually there is no reason to set a style or template inline, even if you only intend to use that style or template in that location. Большинство элементов, которые могут взять стиль или шаблон, также поддерживают свойство содержимого и модель содержимого.Most elements that can take a style or template also support a content property and a content model. Если вы используете только любое логическое дерево, созданное с помощью стилизации или шаблона, было бы еще проще просто заполнить это свойство содержимого эквивалентными дочерними элементами в прямой разметке.If you are only using whatever logical tree you create through styling or templating once, it would be even easier to just fill that content property with the equivalent child elements in direct markup. Это полностью обходит механизмы стиля и шаблонов.This would bypass the style and template mechanisms altogether.

Другие синтаксисы, включенные расширениями разметки, возвращающие объект, также доступны для стилей и шаблонов.Other syntaxes enabled by markup extensions that return an object are also possible for styles and templates. Два таких расширения с возможными сценариями включают TemplateBinding и Binding.Two such extensions that have possible scenarios include TemplateBinding and Binding.

См. такжеSee also