Расширение разметки 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 на некотором уровне в странице, приложении, доступных темах элементов управления и внешних или системных ресурсах. Подстановка ресурса происходит в таком порядке. Дополнительные сведения о поведении подстановки ресурсов для статических и динамических ресурсов см. в разделе Общие сведения о ресурсах.

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

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

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

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

Излишним может оказаться использование StaticResource в атрибуте, в котором свойство ResourceKey определено как пара «свойство=значение».

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

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

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

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

См. также

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

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

Общие сведения о языке XAML (WPF)

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

Общие сведения о ресурсах

Ресурсы и код