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


Расширение разметки 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 в формате пара property=value.

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

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

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

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

См. также