Расширение разметки ThemeDictionary
Предоставляет способ для авторов пользовательских элементов управления или приложений, которые интегрируют сторонние элементы управления, загружать ресурсы, специфичные для темы, для использования в стилизации элементов управления.
Использование атрибута XAML
<object property="{ThemeDictionary assemblyUri}" ... />
Использование элемента объекта XAML
<object>
<object.property>
<ThemeDictionary AssemblyName="assemblyUri"/>
<object.property>
<object>
Значения XAML
Ценность | Описание |
---|---|
assemblyUri |
Универсальный идентификатор ресурса (URI) сборки, содержащей сведения о теме. Как правило, это URI пакета, ссылающийся на сборку в составе большего пакета. Ресурсы сборки и URI пакетов упрощают проблемы с развертыванием. Дополнительные сведения см. в разделе "URI-адреса пакетов" в WPF. |
Замечания
Это расширение предназначено для заполнения только одного конкретного значения свойства: значение для ResourceDictionary.Source.
С помощью этого расширения можно указать единую сборку только для ресурсов, содержащую некоторые стили, которые используются только в том случае, если тема Windows Aero применяется к системе пользователя, другие стили только в том случае, если тема Luna активна и т. д. С помощью этого расширения содержимое словаря ресурсов для конкретного элемента управления может быть автоматически аннулировано и перезагружено для использования с другой темой при необходимости.
Строка assemblyUri
(значение свойстваAssemblyName) формирует основу соглашения об именовании, определяющего, какой словарь применяется для определенной темы. Логика ProvideValue для ThemeDictionary
завершает соглашение, создавая универсальный идентификатор ресурса (URI), который указывает на определенный вариант словаря тем, содержащийся в предварительно скомпилированной сборке ресурсов. Описание этого соглашения или взаимодействия темы с общим стилем управления и стилем страниц или приложений в качестве концепции не рассматривается полностью здесь. Основной сценарий использования ThemeDictionary
— это указание свойства Source для ResourceDictionary
, объявленного на уровне приложения. Если вы предоставляете универсальный код ресурса (URI) для сборки с помощью расширения ThemeDictionary
, а не в качестве прямого URI, логика расширения будет предоставлять логику недопустимости, которая применяется при изменении системной темы.
Синтаксис атрибутов — это наиболее распространенный синтаксис, используемый с этим расширением разметки. Предоставленный строковый маркер после строки идентификатора ThemeDictionary
назначается значением AssemblyName в подлежащем классе расширения ThemeDictionaryExtension.
ThemeDictionary
также можно использовать в синтаксисе элемента объекта. В этом случае необходимо указать значение свойства AssemblyName.
ThemeDictionary
также можно использовать в подробном использовании атрибута, указывающего свойство Member как пару property=value:
<object property="{ThemeDictionary AssemblyName=assemblyUri}" ... />
Подробное описание часто полезно для расширений, имеющих больше одного настраиваемого свойства, или если некоторые свойства являются необязательными. Поскольку ThemeDictionary
имеет только одно свойство, которое можно изменить и которое является обязательным, это избыточное использование не является типичным.
В реализации обработчика XAML WPF обработка этого расширения разметки определяется классом ThemeDictionaryExtension.
ThemeDictionary
— это расширение разметки. Расширения разметки обычно реализуются, если существует требование побега значений атрибутов, отличных от литеральных значений или имен обработчиков, и требование является более глобальным, чем просто помещать преобразователи типов на определенные типы или свойства. Все расширения разметки в XAML используют символы { и } в синтаксисе атрибутов, что является соглашением, с помощью которого обработчик XAML распознает, что расширение разметки должно обрабатывать атрибут. Дополнительные сведения см. в разделе Расширения разметки иXAML WPF.
См. также
- Стилизация и шаблонирование
- XAML в WPF
- расширения разметки и XAML WPF
- ресурсы, содержимое и файлы данных приложений WPF
.NET Desktop feedback