Поделиться через


Расширение разметки ComponentResourceKey

Обновлен: Ноябрь 2007

Определения и ключи ссылок ресурсов, загружаемых из внешних сборок. Это расширение позволяет при поиске ресурса указать целевой тип в сборке, вместо явного словаря ресурса в сборке.

Использование атрибута XAML (установка ключа, компактный)

<object x:Key="{ComponentResourceKey {x:Type targetTypeName}, targetID}" .../>

Использование атрибута XAML (установка ключа, подробный)

<object x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}" .../>

Использование атрибута XAML (запрос ресурса, компактный)

<object property="{DynamicResource {ComponentResourceKey {x:Type targetTypeName}, targetID}}" .../>

Использование атрибута XAML (запрос ресурса, подробный)

<object property="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}}" .../>

Значения XAML

targetTypeName

Имя открытого типа среда CLR (common language runtime), определенного в сборке ресурсов.

targetID

Ключ ресурса. При поиске ресурсов код targetID будет аналогом атрибута Атрибут x:Key ресурса.

Заметки

Класс TypeInTargetAssembly определяет тип, существующий в целевой сборке, в которой фактически определен ресурс. Расширение ComponentResourceKey может быть определено и использовано независимо от того, где определена сборка TypeInTargetAssembly, но со временем оно должен распознать тип через сборки, на которые имеются ссылки.

Типичное использование класса ComponentResourceKey заключается в определении ключей, которые затем представляются как члены класса. Для этой сферы применения следует использовать конструктор класса ComponentResourceKey, а не расширение разметки.

Синтаксис атрибута обычно используется для расширения разметки ComponentResourceKey. Приведенный компактный синтаксис основан на подписи конструктора ComponentResourceKey.ComponentResourceKey, при этом важен порядок, в котором представлены объекты targetTypeName и targetID. Подробный синтаксис основан на конструкторе по умолчанию ComponentResourceKey.ComponentResourceKey. Затем устанавливаются классы TypeInTargetAssembly и ResourceId способом, который соответствует истинному синтаксису атрибута элемента объекта. В подробном синтаксисе не важен порядок, в котором устанавливаются значения свойств. Связь и механизмы из этих двух вариантов (компактный и подробный синтаксис) описаны более подробно в разделе Расширения разметки и XAML.

Расширение ComponentResourceKey может использоваться в синтаксисе элемента объекта. В этом случае указание значения свойств TypeInTargetAssembly и ResourceId необходимо для правильной инициализации расширения.

В реализации средства чтения XAML WPF обработка данного расширения разметки определяется классом ComponentResourceKey.

Расширение ComponentResourceKey является расширением разметки. Расширения разметки обычно реализуются, если требуется заменить значения атрибутов на нелитеральные значения или имена обработчиков и если требуется не только простая настройка преобразователей типов на работу с определенными типами или свойствами. Все расширения разметки в XAML используют символы { and } в синтаксисе их атрибутов, который является соглашением, по которому процессор XAML распознает, что расширение разметки должно обработать атрибут. Дополнительные сведения см. в разделе Расширения разметки и XAML.

См. также

Основные понятия

Стилизация и использование шаблонов

Общие сведения о XAML

Расширения разметки и XAML

Ссылки

ComponentResourceKey

Style

ControlTemplate