DynamicResource, extension de balisageDynamicResource Markup Extension

Fournit une valeur pour tout XAMLXAML attribut de propriété en différant cette valeur en tant que référence à une ressource définie.Provides a value for any XAMLXAML property attribute by deferring that value to be a reference to a defined resource. Le comportement de recherche pour cette ressource est analogue à la recherche au moment de l’exécution.Lookup behavior for that resource is analogous to run-time lookup.

Utilisation des attributs XAMLXAML Attribute Usage

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

Utilisation des éléments de propriété XAMLXAML Property Element Usage

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

Valeurs XAMLXAML Values

key Clé pour la ressource demandée.The key for the requested resource. Cette clé a été initialement assignée par la directive x :Key si une ressource a été créée dans le balisage ou si elle a été fournie en tant que paramètre key lors de l’appel de ResourceDictionary.Add si la ressource a été créée dans le code.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.

NotesRemarks

Une DynamicResource créera une expression temporaire pendant la compilation initiale et différera donc la recherche des ressources jusqu’à ce que la valeur de ressource demandée soit réellement requise pour construire un objet.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. Cela peut se faire éventuellement après le chargement de la page XAMLXAML.This may potentially be after the XAMLXAML page is loaded. La valeur de ressource est recherchée en fonction de la recherche de clé par rapport à tous les dictionnaires de ressources actifs en commençant par l’étendue de la page actuelle, et remplace l’expression d’espace réservé de la compilation.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.

Important

En termes de priorité des propriétés de dépendance, une expression DynamicResource est équivalente à la position à laquelle la référence de ressource dynamique est appliquée.In terms of dependency property precedence, a DynamicResource expression is equivalent to the position where the dynamic resource reference is applied. Si vous définissez une valeur locale pour une propriété qui avait précédemment une expression DynamicResource comme valeur locale, la DynamicResource est complètement supprimée.If you set a local value for a property that previously had a DynamicResource expression as the local value, the DynamicResource is completely removed. Pour plus d’informations, consultez Priorité de la valeur de propriété de dépendance.For details, see Dependency Property Value Precedence.

Certains scénarios d’accès aux ressources sont particulièrement appropriés pour les DynamicResource par opposition à une extension de balisage StaticResource.Certain resource access scenarios are particularly appropriate for DynamicResource as opposed to a StaticResource Markup Extension. Consultez ressources XAML pour une discussion sur les avantages relatifs et les implications sur les performances de DynamicResource et StaticResource.See XAML Resources for a discussion about the relative merits and performance implications of DynamicResource and StaticResource.

Le ResourceKey spécifié doit correspondre à une ressource existante déterminée par la directive x :Key à un certain niveau de la page, de l’application, des thèmes de contrôle disponibles et des ressources externes, ou des ressources système, et la recherche de ressources se produira dans cet ordre.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. Pour plus d’informations sur la recherche de ressources pour les ressources statiques et dynamiques, consultez ressources XAML.For more information about resource lookup for static and dynamic resources, see XAML Resources.

Une clé de ressource peut être n’importe quelle chaîne définie dans la grammaire XamlName.A resource key may be any string defined in the XamlName Grammar. Une clé de ressource peut également être d’autres types d’objets, tels qu’un Type.A resource key may also be other object types, such as a Type. Une clé de Type est essentielle à la façon dont les contrôles peuvent être mis en forme par des thèmes.A Type key is fundamental to how controls can be styled by themes. Pour plus d’informations, consultez Vue d’ensemble de la création de contrôles.For more information, see Control Authoring Overview.

Les API de recherche de valeurs de ressource, telles que FindResource, suivent la même logique de recherche de ressource que celle utilisée par DynamicResource.APIs for lookup of resource values, such as FindResource, follow the same resource lookup logic as used by DynamicResource.

Les autres méthodes déclaratives de référencement d’une ressource sont en tant qu' extension de balisage StaticResource.The alternative declarative means of referencing a resource is as a StaticResource Markup Extension.

La syntaxe d’attribut est la syntaxe la plus couramment utilisée avec cette extension de balisage.Attribute syntax is the most common syntax used with this markup extension. Le jeton de chaîne fourni après la chaîne d’identificateur DynamicResource est assigné en tant que valeur ResourceKey de la classe d’extension DynamicResourceExtension sous-jacente.The string token provided after the DynamicResource identifier string is assigned as the ResourceKey value of the underlying DynamicResourceExtension extension class.

DynamicResource peut être utilisé dans la syntaxe d’élément objet.DynamicResource can be used in object element syntax. Dans ce cas, il est nécessaire de spécifier la valeur de la propriété ResourceKey.In this case, specifying the value of the ResourceKey property is required.

DynamicResource peut également être utilisé dans une utilisation d'attributs en clair qui spécifie la propriété ResourceKey en tant que paire propriété=valeur :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}" .../>  

L'utilisation en clair est souvent utile pour les extensions qui comportent plusieurs propriétés définissables ou si certaines propriétés sont facultatives.The verbose usage is often useful for extensions that have more than one settable property, or if some properties are optional. DynamicResource ne comportant qu'une seule propriété définissable (obligatoire), cette utilisation en clair n'est pas classique.Because DynamicResource has only one settable property, which is required, this verbose usage is not typical.

Dans l’implémentation du processeur WPFWPF XAMLXAML, la gestion de cette extension de balisage est définie par la classe DynamicResourceExtension.In the WPFWPF XAMLXAML processor implementation, the handling for this markup extension is defined by the DynamicResourceExtension class.

DynamicResource est une extension de balisage.DynamicResource is a markup extension. Les extensions de balisage sont généralement implémentées pour éviter que les valeurs d’attribut ne soient autre chose que des valeurs littérales ou des noms de gestionnaire et lorsque l’exigence dépasse le cadre de la définition de convertisseurs de type sur certains types ou propriétés.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. Toutes les extensions de balisage XAMLXAML utilisent les caractères { et } dans leur syntaxe d’attribut, convention selon laquelle un processeur XAMLXAML reconnaît qu’une extension de balisage doit traiter l’attribut.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. Pour plus d’informations, consultez Extensions de balisage et XAML WPF.For more information, see Markup Extensions and WPF XAML.

Voir aussiSee also