DynamicResource, extension de balisage

Fournit une valeur pour n’importe quel attribut de propriété XAML en reportant cette valeur comme référence à une ressource définie. Le comportement de recherche de cette ressource est analogue à la recherche au moment de l’exécution.

Utilisation d'attributs XAML

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

Utilisation des éléments de propriété XAML

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

Valeurs XAML

Valeur Description
key Clé pour la ressource demandée. Cette clé a été initialement affectée par la directive x :Key si une ressource a été créée dans le balisage ou a été fournie en tant que paramètre lors de l’appel ResourceDictionary.Add si la ressource a été créée dans le key code.

Notes

Une DynamicResource expression temporaire est créée 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. Cela peut être une fois la page XAML chargée. La valeur de la ressource est trouvée en fonction de la recherche par clé sur tous les dictionnaires de ressources actifs à partir de l’étendue de la page active et est remplacée par l’expression d’espace réservé à partir de la compilation.

Important

En termes de précédence de propriété de dépendance, une DynamicResource expression équivaut à la position où la référence de ressource dynamique est appliquée. Si vous définissez une valeur locale pour une propriété qui avait précédemment une DynamicResource expression comme valeur locale, la DynamicResource valeur est complètement supprimée. Pour plus d’informations, consultez Priorité de la valeur de propriété de dépendance.

Certains scénarios d’accès aux ressources sont particulièrement appropriés par DynamicResource opposition à une extension staticResource Markup. Consultez les ressources XAML pour une discussion sur les mérites relatifs et les implications relatives aux performances de DynamicResource et StaticResource.

L’élément ResourceKey spécifié doit correspondre à une ressource existante déterminée par la directive x :Key à un certain niveau dans votre page, votre application, les thèmes de contrôle disponibles et les ressources externes, ou les ressources système, et la recherche de ressources se produit dans cet ordre. Pour plus d’informations sur la recherche de ressources pour les ressources statiques et dynamiques, consultez Ressources XAML.

Une clé de ressource peut être n’importe quelle chaîne définie dans la grammaire XamlName. Une clé de ressource peut également être d’autres types d’objets, tels qu’un Type. Une Type clé est essentielle à la façon dont les contrôles peuvent être mis en forme par thèmes. Pour plus d’informations, consultez Vue d’ensemble de la création de contrôles.

API pour la recherche de valeurs de ressources, telles que FindResource, suivez la même logique de recherche de ressource que celle utilisée par DynamicResource.

L’autre moyen déclaratif de référencer une ressource est une extension staticResource Markup.

La syntaxe d’attribut est la syntaxe la plus couramment utilisée avec cette extension de balisage. 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.

DynamicResource peut être utilisé dans la syntaxe de l’élément objet. Dans ce cas, la spécification de la valeur de la ResourceKey propriété est requise.

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 :

<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. DynamicResource ne comportant qu'une seule propriété définissable (obligatoire), cette utilisation en clair n'est pas classique.

Dans l’implémentation du processeur XAML WPF, la gestion de cette extension de balisage est définie par la DynamicResourceExtension classe.

DynamicResource est une extension de balisage. 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. Toutes les extensions de balisage en XAML utilisent les caractères { et } dans leur syntaxe d’attribut, c’est-à-dire la convention par laquelle un processeur XAML reconnaît qu’une extension de balisage doit traiter l’attribut. Pour plus d’informations, consultez Extensions de balisage et XAML WPF.

Voir aussi