Extensión de marcado StaticResourceStaticResource Markup Extension

Proporciona un valor para cualquier atributo de propiedad XAMLXAML mediante la búsqueda de una referencia a un recurso ya definido.Provides a value for any XAMLXAML property attribute by looking up a reference to an already defined resource. El comportamiento de búsqueda de ese recurso es análogo a la búsqueda en tiempo de carga, que buscará los recursos que se cargaron previamente desde el marcado de la página de XAMLXAML actual, así como otros orígenes de aplicación, y generará ese valor de recurso como la propiedad. valor en los objetos de tiempo de ejecución.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.

Uso de atributos XAMLXAML Attribute Usage

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

Uso de elementos de objeto XAMLXAML Object Element Usage

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

Valores XAMLXAML Values

key Clave del recurso solicitado.The key for the requested resource. Esta clave se asignó inicialmente mediante la Directiva x:Key si un recurso se creó en el marcado, o se proporcionó como key parámetro al llamar a ResourceDictionary.Add si el recurso se creó en el código.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.

ComentariosRemarks

Importante

Un StaticResource no debe intentar realizar una referencia adelantada a un recurso que se define léxicamente en el archivo de XAMLXAML.A StaticResource must not attempt to make a forward reference to a resource that is defined lexically further within the XAMLXAML file. No se admite el intento de hacerlo y, incluso si no se produce un error en una referencia de este tipo, el intento de la referencia adelantada incurrirá en el rendimiento en tiempo de carga cuando se busquen las tablas hash internas que representan una 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. Para obtener los mejores resultados, ajuste la composición de los diccionarios de recursos de forma que se puedan evitar las referencias hacia delante.For best results, adjust the composition of your resource dictionaries such that forward references can be avoided. Si no puede evitar una referencia adelantada, utilice en su lugar la extensión de marcado DynamicResource .If you cannot avoid a forward reference, use DynamicResource Markup Extension instead.

El ResourceKey especificado debe corresponder a un recurso existente, identificado con una Directiva x:Key en algún nivel de la página, aplicación, los temas de control disponibles y los recursos externos, o los recursos del sistema.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. La búsqueda de recursos se produce en ese orden.The resource lookup occurs in that order. Para obtener más información sobre el comportamiento de búsqueda de recursos para recursos estáticos y dinámicos, vea recursos XAML.For more information about resource lookup behavior for static and dynamic resources, see XAML Resources.

Una clave de recurso puede ser cualquier cadena definida en la gramática de XamlName.A resource key can be any string defined in the XamlName Grammar. Una clave de recurso también puede ser otros tipos de objeto, como un Type.A resource key can also be other object types, such as a Type. Una clave Type es fundamental para el modo en que los temas pueden aplicar estilos a los controles mediante una clave de estilo implícita.A Type key is fundamental to how controls can be styled by themes, through an implicit style key. Para obtener más información, consulte Información general sobre la creación de controles.For more information, see Control Authoring Overview.

El método declarativo alternativo de hacer referencia a un recurso es una extensión de marcado DynamicResource.The alternative declarative means of referencing a resource is as a DynamicResource Markup Extension.

La sintaxis de atributo es la que se usa normalmente con esta extensión de marcado.Attribute syntax is the most common syntax used with this markup extension. El token de cadena que se proporciona después de la cadena de identificador StaticResource se asigna como valor de ResourceKey de la clase de extensión StaticResourceExtension subyacente.The string token provided after the StaticResource identifier string is assigned as the ResourceKey value of the underlying StaticResourceExtension extension class.

StaticResource se puede utilizar en la sintaxis de elementos de objeto.StaticResource can be used in object element syntax. En este caso, es necesario especificar el valor de la propiedad ResourceKey.In this case, specifying the value of the ResourceKey property is required.

StaticResource también se puede utilizar en el uso de atributos detallado que especifica la propiedad ResourceKey como un par de propiedad=valor: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}" .../>  

El uso detallado suele ser útil para las extensiones que tienen más de una propiedad que se puede configurar, o en aquellos casos en que algunas propiedades son opcionales.The verbose usage is often useful for extensions that have more than one settable property, or if some properties are optional. Dado que StaticResource tiene una sola propiedad configurable, que es obligatoria, este uso detallado no es habitual.Because StaticResource has only one settable property, which is required, this verbose usage is not typical.

En la implementación del procesador de WPFWPF XAMLXAML, el control de esta extensión de marcado se define mediante la clase StaticResourceExtension.In the WPFWPF XAMLXAML processor implementation, the handling for this markup extension is defined by the StaticResourceExtension class.

StaticResource es una extensión de marcado.StaticResource is a markup extension. Las extensiones de marcado se suelen implementar cuando se necesita que los valores de los atributos de escape no sean valores literales o nombres de controladores, y este requisito es de índole más global que limitarse a colocar los convertidores de tipos en determinados tipos o propiedades.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. Todas las extensiones de marcado de XAMLXAML usan los caracteres { y } en su sintaxis de atributo, que es la convención que permite que un procesador de XAMLXAML reconozca que el atributo se debe procesar mediante una extensión de marcado.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. Para más información, vea Extensiones de marcado y XAML de WPF.For more information, see Markup Extensions and WPF XAML.

Vea tambiénSee also