Расширение разметки ThemeDictionary
Обновлен: Ноябрь 2007
Предоставляет для авторов пользовательского элемента управления или приложений, которые объединяют элементы управления сторонних производителей, способ загрузки определенных темой словарей ресурсов для использования в стилизации элемента управления.
Использование атрибута XAML
<object property="{ThemeDictionary assemblyUri}" .../>
Использование элемента объекта XAML
<object>
<object.property>
<ThemeDictionary AssemblyName="assemblyUri"/>
<object.property>
<object>
Значения XAML
assemblyUri |
Сборка URI (uniform resource identifier — универсальный код ресурса), содержащая сведения темы. Как правило, это пакет URI, который ссылается на сборку в большом пакете. Сборка ресурсов и пакет URI упрощают развертывание. Дополнительные сведения см. в разделе URI типа "pack" в Windows Presentation Foundation. |
Заметки
Это расширение предназначено для заполнения только одного значения конкретного свойства: ResourceDictionary.Source.
Используя это расширение, можно указать одну сборку ресурсов, содержащую некоторые стили для использования только при применении к пользовательской системе темы Windows Aero, другие стили при активной теме Luna и т. д. Используя это расширение, при необходимости содержимое словаря ресурсов элемента управления можно автоматически считать недействительным и перезагрузить для другой темы.
Строка assemblyUri (значение свойства AssemblyName) удовлетворяет основе соглашения об именовании, определяющей, какой словарь применяется для конкретной темы. Логика ProvideValue для ThemeDictionary завершает соглашение, создавая URI (uniform resource identifier — универсальный код ресурса), который указывает на тип словаря конкретной темы, как содержащийся внутри предварительно откомпилированной сборки ресурсов. Описание этого соглашения или взаимодействия темы со стилизацией основных элементов управления и стилизацией уровня страницы или приложения, как концепции, полностью в данном разделе не рассматривается. Основным сценарием использования ThemeDictionary является указание свойства Source из ResourceDictionary, объявленного на уровне приложения. При обеспечении URI для сборки через расширение ThemeDictionary, вместо непосредственного URI, логика расширения обеспечит логику недостоверности, которая применяется при каждом изменении системной темы.
Синтаксис атрибута является наиболее распространенным синтаксисом, который используется с этим расширением разметки. Метка строки, указанная после идентификатора строки ThemeDictionary, присваивается как значение AssemblyName базового класса расширения ThemeDictionaryExtension.
Ключевое слово ThemeDictionary также можно использовать в синтаксисе элемента объекта. В этом случае определение значения свойства AssemblyName является обязательным.
Излишним может оказаться использование ThemeDictionary в атрибуте, в котором свойство Member определено как пара «свойство = значение».
<object property="{ThemeDictionary AssemblyName=assemblyUri}" .../>
Подробное определение зачастую удобно использовать для расширений, которые имеют несколько устанавливаемых свойств, а также в том случае, если некоторые свойства являются необязательными. Так как ThemeDictionary имеет только одно устанавливаемое свойство, которое является обязательным, это использование не является типичным.
В реализации обработчика XAMLWPF обработка данного расширения разметки определяется классом ThemeDictionaryExtension.
ThemeDictionary является расширением разметки. Расширения разметки обычно реализуются, если требуется заменить значения атрибутов на нелитеральные значения или имена обработчиков и если требуется не только простая настройка преобразователей типов на работу с определенными типами или свойствами. Все расширения разметки в XAML используют символы { and } в синтаксисе их атрибутов, который является соглашением, по которому процессор XAML распознает, что расширение разметки должно обработать атрибут. Дополнительные сведения см. в разделе Расширения разметки и XAML.
См. также
Задачи
Пример приложения с поддержкой вариантов оформления
Основные понятия
Стилизация и использование шаблонов
Ресурсы, содержимое и файлы данных для приложений Windows Presentation Foundation