Расширение разметки StaticResourceStaticResource Markup Extension

Предоставляет значение для любого XAMLXAML атрибута свойства путем поиска ссылки на уже определенный ресурс.Provides a value for any XAMLXAML property attribute by looking up a reference to an already defined resource. Поведение подстановки для этого ресурса аналогично поиску во время загрузки, который будет искать ресурсы, ранее загруженные из разметки текущей XAMLXAML страницы, а также другие источники приложений и создающие это значение ресурса в качестве значение свойства в объектах времени выполнения.Lookup behavior for that resource is analogous to load-time lookup, which will look for resources that were previously loaded from the markup of the current XAMLXAML page as well as other application sources, and will generate that resource value as the property value in the run-time objects.

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

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

Использование элемента объекта XAMLXAML Object Element Usage

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

Значения XAMLXAML Values

key Ключ для запрашиваемого ресурса.The key for the requested resource. Этот ключ изначально был назначен директивой x:Key , если ресурс был создан в разметке, или был предоставлен в key качестве параметра при ResourceDictionary.Add вызове, если ресурс был создан в коде.This key was initially assigned by the x:Key Directive if a resource was created in markup, or was provided as the key parameter when calling ResourceDictionary.Add if the resource was created in code.

ПримечанияRemarks

Важно!

Не должна пытаться сделать прямую ссылку на ресурс, который определен лексически XAMLXAML в файле. StaticResourceA StaticResource must not attempt to make a forward reference to a resource that is defined lexically further within the XAMLXAML file. Попытка сделать это не поддерживается, и даже если такая ссылка не завершается ошибкой, попытка пересылки ссылки приведет к снижению производительности во время загрузки при поиске внутренних хэш-таблиц, представляющих собой ResourceDictionary .Attempting to do so is not supported, and even if such a reference does not fail, attempting the forward reference will incur a load time performance penalty when the internal hash tables representing a ResourceDictionary are searched. Для достижения лучших результатов измените композицию словарей ресурсов таким образом, чтобы можно было избежать пересылки ссылок.For best results, adjust the composition of your resource dictionaries such that forward references can be avoided. Если вы не можете избежать прямой ссылки, используйте вместо этого расширение разметки DynamicResource .If you cannot avoid a forward reference, use DynamicResource Markup Extension instead.

Указанное ResourceKey значение должно соответствовать существующему ресурсу, идентифицированному с помощью директивы x:Key на определенном уровне страницы, приложения, доступных тем элементов управления и внешних ресурсов, а также системных ресурсов.The specified ResourceKey should correspond to an existing resource, identified with an x:Key Directive at some level in your page, application, the available control themes and external resources, or system resources. Поиск ресурсов выполняется в указанном порядке.The resource lookup occurs in that order. Дополнительные сведения о поведении поиска ресурсов для статических и динамических ресурсов см. в разделе ресурсы XAML.For more information about resource lookup behavior for static and dynamic resources, see XAML Resources.

Ключ ресурса может быть любой строкой, определенной в грамматике имяxaml.A resource key can be any string defined in the XamlName Grammar. Ключ ресурса также может быть другими типами объектов, например Type.A resource key can also be other object types, such as a Type. Type Ключом является фундаментальное понятие того, как элементы управления могут быть оформлены темами с помощью неявного ключа стиля.A Type key is fundamental to how controls can be styled by themes, through an implicit style key. Дополнительные сведения см. в разделе Общие сведения о разработке элементов управления.For more information, see Control Authoring Overview.

Альтернативные декларативные средства для ссылки на ресурс — это расширение разметки DynamicResource.The alternative declarative means of referencing a resource is as a DynamicResource Markup Extension.

Синтаксис атрибутов является наиболее распространенным синтаксисом, используемым с этим расширением разметки.Attribute syntax is the most common syntax used with this markup extension. Строковая лексема, указываемая после строки идентификатора StaticResource, присваивается в качестве значения ResourceKey соответствующего класса расширения StaticResourceExtension.The string token provided after the StaticResource identifier string is assigned as the ResourceKey value of the underlying StaticResourceExtension extension class.

StaticResourceможет использоваться в синтаксисе объектного элемента.StaticResource can be used in object element syntax. В этом случае указание значения ResourceKey свойства обязательно.In this case, specifying the value of the ResourceKey property is required.

Излишним может оказаться и использование StaticResource в атрибуте, в котором свойство ResourceKey определено как пара "свойство=значение".StaticResource can also be used in a verbose attribute usage that specifies the ResourceKey property as a property=value pair:

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

Подробное определение зачастую удобно использовать для расширений, которые имеют несколько устанавливаемых свойств, а также в том случае, если некоторые свойства являются необязательными.The verbose usage is often useful for extensions that have more than one settable property, or if some properties are optional. Так как StaticResource имеет только одно устанавливаемое свойство, которое является обязательным, это использование не является типичным.Because StaticResource has only one settable property, which is required, this verbose usage is not typical.

В реализации процессора обработка этого StaticResourceExtension расширения разметки определяется классом. XAMLXAML WPFWPFIn the WPFWPF XAMLXAML processor implementation, the handling for this markup extension is defined by the StaticResourceExtension class.

StaticResource является расширением разметки.StaticResource is a markup extension. Расширения разметки обычно реализуются, если требуется заменить значения атрибутов на нелитеральные значения или имена обработчиков и если требуется больше, чем простая настройка преобразователей типов на работу с определенными типами или свойствами.Markup extensions are typically implemented when there is a requirement to escape attribute values to be other than literal values or handler names, and the requirement is more global than just putting type converters on certain types or properties. Все расширения разметки в XAMLXAML используют символы "{" и "}" в синтаксисе их атрибутов, который является соглашением, по которому обработчик XAMLXAML распознает, что расширение разметки должно обработать атрибут.All markup extensions in XAMLXAML use the { and } characters in their attribute syntax, which is the convention by which a XAMLXAML processor recognizes that a markup extension must process the attribute. Дополнительные сведения см. в разделе Расширения разметки и XAML WPF.For more information, see Markup Extensions and WPF XAML.

См. такжеSee also