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

Обновлен: Ноябрь 2007

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

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

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

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

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

Значения XAML

key

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

Заметки

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

ms748942.alert_caution(ru-ru,VS.90).gifВажное примечание.

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

Определенные сценарии доступа к ресурсу особенно подходят для DynamicResource, в отличие от Расширение разметки StaticResource. Обсуждение относительных достоинств и влияния DynamicResource и StaticResource на производительность см. в разделе Общие сведения о ресурсах.

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

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

API-интерфейсы для поиска значений ресурсов, такие как FindResource, следуют той же логике поиска ресурса, которая используется DynamicResource.

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

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

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

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

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

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

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

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

См. также

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

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

Ресурсы и код

Общие сведения о XAML

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

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

Ссылки

Атрибут x:Key

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