Extensión de marcado DynamicResourceDynamicResource Markup Extension

Proporciona un valor para cualquier XAMLXAML atributo de propiedad aplazando ese valor para que sea una referencia a un recurso definido.Provides a value for any XAMLXAML property attribute by deferring that value to be a reference to a defined resource. Comportamiento de búsqueda de ese recurso es análogo a la búsqueda de tiempo de ejecución.Lookup behavior for that resource is analogous to run-time lookup.

Uso de atributos XAMLXAML Attribute Usage

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

Uso de elementos de propiedad XAMLXAML Property Element Usage

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

Valores XAMLXAML Values

key Clave del recurso solicitado.The key for the requested resource. Esta clave se asignó inicialmente por el Directiva x: Key si un recurso se creó en el marcado, o se proporcionó como el 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

Un DynamicResource creará una expresión temporal durante la compilación inicial y, por tanto, aplazar la consulta de recursos hasta que el valor del recurso solicitado sea realmente necesario para construir un objeto.A DynamicResource will create a temporary expression during the initial compilation and thus defer lookup for resources until the requested resource value is actually required in order to construct an object. Esto puede ser potencialmente después el XAMLXAML se carga la página.This may potentially be after the XAMLXAML page is loaded. El valor del recurso se encuentra en función de búsqueda de clave en todos los diccionarios de recursos activos a partir del ámbito de la página actual y se sustituye por la expresión de marcador de posición de la compilación.The resource value will be found based on key search against all active resource dictionaries starting from the current page scope, and is substituted for the placeholder expression from compilation.

Importante

En términos de prioridad de la propiedad de dependencia, una DynamicResource expresión es equivalente a la posición donde se aplica la referencia de recurso dinámico.In terms of dependency property precedence, a DynamicResource expression is equivalent to the position where the dynamic resource reference is applied. Si establece un valor local para una propiedad que previamente tenía una DynamicResource expresión como el valor local, el DynamicResource se ha quitado completamente.If you set a local value for a property that previously had a DynamicResource expression as the local value, the DynamicResource is completely removed. Para obtener más información, consulte Prioridad de los valores de propiedades de dependencia.For details, see Dependency Property Value Precedence.

Son especialmente adecuadas para determinados escenarios de acceso de recurso DynamicResource en contraposición a un StaticResource Markup Extension.Certain resource access scenarios are particularly appropriate for DynamicResource as opposed to a StaticResource Markup Extension. Consulte recursos XAML para obtener información sobre las ventajas relativas y las implicaciones de rendimiento de DynamicResource y StaticResource.See XAML Resources for a discussion about the relative merits and performance implications of DynamicResource and StaticResource.

Especificado ResourceKey debe corresponder a un recurso existente determinado por Directiva x: Key en algún nivel en la página, aplicación, temas de control disponibles y los recursos externos o recursos del sistema y la búsqueda de recursos se realizará en ese orden.The specified ResourceKey should correspond to an existing resource determined by x:Key Directive at some level in your page, application, the available control themes and external resources, or system resources, and the resource lookup will happen in that order. Para obtener más información acerca de la búsqueda de recursos para recursos estáticos y dinámicos, consulte recursos XAML.For more information about resource lookup for static and dynamic resources, see XAML Resources.

Una clave de recurso puede ser cualquier cadena definida en el gramática de XamlName.A resource key may 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 may also be other object types, such as a Type. Un Type es fundamental en cómo puede cambiar el estilo por temas clave.A Type key is fundamental to how controls can be styled by themes. Para obtener más información, consulte Información general sobre la creación de controles.For more information, see Control Authoring Overview.

Valores de las API para la búsqueda de recursos, como FindResource, siguen la misma lógica de búsqueda de recursos que usa el DynamicResource.APIs for lookup of resource values, such as FindResource, follow the same resource lookup logic as used by DynamicResource.

Es la manera declarativa alternativa de hacer referencia a un recurso como un StaticResource Markup Extension.The alternative declarative means of referencing a resource is as a StaticResource 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 DynamicResource se asigna como valor de ResourceKey de la clase de extensión DynamicResourceExtension subyacente.The string token provided after the DynamicResource identifier string is assigned as the ResourceKey value of the underlying DynamicResourceExtension extension class.

DynamicResource se puede usar en la sintaxis de elemento de objeto.DynamicResource can be used in object element syntax. En este caso, especificando el valor de la ResourceKey propiedad es obligatoria.In this case, specifying the value of the ResourceKey property is required.

DynamicResource también se puede utilizar en el uso de atributos detallado que especifica la propiedad ResourceKey como un par de propiedad=valor:DynamicResource can also be used in a verbose attribute usage that specifies the ResourceKey property as a property=value pair:

<object property="{DynamicResource 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 DynamicResource tiene una sola propiedad configurable, que es obligatoria, este uso detallado no es habitual.Because DynamicResource has only one settable property, which is required, this verbose usage is not typical.

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

DynamicResource es una extensión de marcado.DynamicResource 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