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


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

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

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

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

Значения XAML

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

Замечания

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

Способ преобразования CustomResource в словарь ресурсов не описан в этом разделе, поскольку это может существенно варьироваться в зависимости от реализации CustomXamlResourceLoader.

Метод GetResource реализации CustomXamlResourceLoader вызывается синтаксическим анализатором XAML среды выполнения Windows при каждом обнаружении использования {CustomResource} в разметке. Идентификатор ресурса, передаваемый в GetResource, поступает из ключевого аргумента, а другие входные параметры приходят из контекста, например, к которому применяется свойство.

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

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

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