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


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

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

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

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

Использование элемента объекта XAML

<object>
  <object.property>
<StaticResource ResourceKey="key" ... />
  </object.property>
</object>

Значения XAML

Ценность Описание
key Ключ запрошенного ресурса. Этот ключ изначально был назначен директивой x:Key, если ресурс был создан в разметке или был предоставлен в качестве параметра key при вызове ResourceDictionary.Add, если ресурс был создан в коде.

Замечания

Это важно

StaticResource не должно пытаться делать предварительную ссылку на ресурс, определенный далее в файле XAML. Попытка сделать это не поддерживается, и даже если такая ссылка не завершится сбоем, попытка использовать форвардную ссылку повлечет за собой снижение производительности времени загрузки при поиске внутренних хеш-таблиц, представляющих ResourceDictionary. Для получения наилучших результатов настройте состав словарей ресурсов, чтобы можно было избежать перенаправления ссылок. Если не удается избежать перенаправленной ссылки, используйте вместо этого расширение разметки DynamicResource.

Указанный ResourceKey должен соответствовать существующему ресурсу, определяемому директивой x:Key на определенном уровне на странице, приложении, доступных темах управления и внешних ресурсах или системных ресурсах. Поиск ресурсов выполняется в этом порядке. Дополнительную информацию о поведении поиска статических и динамических ресурсов можно найти в ресурсах XAML.

Ключ ресурса может быть любой строкой, определенной в грамматике XamlName. Ключ ресурса может также являться другим типом объекта, например Type. Ключ Type является основой того, как темы могут стилизовать элементы управления через неявный ключ стиля. Для получения дополнительной информации см. Обзор разработки элементов управления.

Альтернативным декларативным средством ссылки на ресурс является расширение разметки DynamicResource.

Синтаксис атрибутов — это наиболее распространенный синтаксис, используемый с этим расширением разметки. Строковый токен, предоставленный после строкового идентификатора StaticResource, назначается в качестве значения ResourceKey базового класса расширения StaticResourceExtension.

StaticResource можно использовать в синтаксисе элемента объекта. В этом случае необходимо указать значение свойства ResourceKey.

StaticResource также можно использовать в атрибуте с подробным описанием, указывающем свойство ResourceKey в виде пары свойство=значение.

<object property="{StaticResource ResourceKey=key}" ... />

Подробное описание часто полезно для расширений, имеющих больше одного настраиваемого свойства, или если некоторые свойства являются необязательными. Так как StaticResource имеет только одно настраиваемое свойство, и оно является обязательным, такой многословный способ использования не является типичным.

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

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

См. также