Partager via


Extension de balisage DynamicResource

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 des attributs XAML

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

Utilisation de l’élément de propriété XAML

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

Valeurs XAML

Valeur Description
key Clé de 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 key lors de l’appel de ResourceDictionary.Add si la ressource a été créée dans le code.

Remarques

Une DynamicResource crée une expression temporaire pendant la compilation initiale et reporte 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 sera trouvée à l'aide d'une recherche par clé sur tous les dictionnaires de ressources actifs à partir de la portée de la page actuelle et est remplacée par l'expression de l'espace réservé à partir de la compilation.

Important

En termes de précédence de propriété de dépendance, une expression DynamicResource é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 expression DynamicResource comme valeur locale, la DynamicResource est complètement supprimée. Pour plus d’informations, consultez priorité de valeur de propriété de dépendance.

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

Le ResourceKey spécifié doit correspondre à une ressource existante déterminée par 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 grammaire XamlName. Une clé de ressource peut également être d’autres types d’objets, tels qu’un Type. Une clé Type est fondamentale pour 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.

Les API pour la consultation de valeurs de ressources, telles que FindResource, suivent la même logique de consultation de ressources que celle utilisée par DynamicResource.

L’autre moyen déclaratif de référencer une ressource est un StaticResource Markup Extension.

La syntaxe d’attribut est la syntaxe la plus courante utilisée avec cette extension de balisage. La chaîne de caractères fournie après l'identificateur DynamicResource est assignée en tant que valeur ResourceKey de la classe d'extension sous-jacente DynamicResourceExtension.

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

DynamicResource peut également être utilisé dans une utilisation verbale des attributs qui spécifie la propriété ResourceKey sous la forme d'une paire propriété=valeur :

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

L'utilisation détaillée est souvent utile pour les extensions qui ont plus d'une propriété modifiable, ou si certaines propriétés sont facultatives. Étant donné que DynamicResource n’a qu’une seule propriété paramétrable, qui est requise, cette utilisation verbeuse n’est pas typique.

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

DynamicResource est une extension de balisage. Les extensions de balisage sont généralement implémentées lorsqu'il est nécessaire que les valeurs des attributs ne soient pas uniquement des valeurs littérales ou des noms de gestionnaires, et lorsque cette nécessité dépasse le simple fait de placer des 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 etWPF XAML.

Voir aussi