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