Расширение разметки {CustomResource}

Предоставляет значение для любого атрибута языка XAML путем оценки ссылки на ресурс, которая берется из пользовательской реализации поиска ресурсов. Поиск ресурсов выполняется посредством реализации класса CustomXamlResourceLoader.

Использование атрибутов XAML

<object property="{CustomResource key}" .../>

Значения XAML

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

Комментарии

CustomResource — это способ получения значений, которые определены где-либо в пользовательском репозитории ресурсов. Этот метод является относительно сложным, и он не используется в большинстве сценариев приложений среды выполнения Windows.

Разрешение CustomResource в словаре ресурсов в данном разделе не описывается, так как может происходить совершенно по-разному в зависимости от реализации класса CustomXamlResourceLoader.

Анализатор XAML среды выполнения Windows вызывает метод GetResource реализации класса CustomXamlResourceLoader при каждом использовании {CustomResource} в разметке. Параметр resourceId, передаваемый методу GetResource, берется из аргумента key; источником остальных входных параметров, а также свойств, к которым применяется это использование, является контекст.

Использование {CustomResource} не работает по умолчанию (базовая реализация GetResource не закончена). Чтобы создать допустимую ссылку на {CustomResource}, сделайте следующее:

  1. Создайте производный пользовательский класс от CustomXamlResourceLoader и переопределите метод GetResource. Не вызывайте базовый класс в реализации.
  2. Задайте свойство CustomXamlResourceLoader.Current для ссылки на класс в логике инициализации. Это необходимо сделать до загрузки XAML-кода уровня страницы, который включает использование расширения {CustomResource}. Например, CustomXamlResourceLoader.Current можно задать в конструкторе подкласса Application, который создается в шаблонах кода программной части App.xaml.
  3. Теперь вы можете использовать расширения {CustomResource} в коде XAML, который приложение загружает как страницы, либо в словарях ресурсов XAML.

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