Extension de balisage DynamicResource

Mise à jour : novembre 2007

Fournit la valeur de tout attribut de propriété XAML en différant la recherche d'une 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 des éléments de propriété XAML

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

Valeurs XAML

key

Clé de la ressource demandée. Cette clé est assignée initialement par le x:Key, attribut si une ressource est créée dans la balise ou est fournie comme paramètre key lors de l'appel de ResourceDictionary.Add si la ressource est créée dans le code.

Notes

Un DynamicResource créera une expression temporaire pendant la compilation initiale et donc diffèrera la recherche des ressources jusqu'à ce que la valeur de ressource demandée soit effectivement requise pour construire un objet. Cela peut se faire potentiellement après que la page XAML a été chargée. La valeur de ressource sera recherchée selon une recherche clé dans tous les dictionnaires de ressources actifs, à partir de la portée de page actuelle, et est remplacée par l'expression d'espace réservé dans la compilation.

Remarque importante :

En termes de priorité des propriétés de dépendance, une expression DynamicResource est équivalente à la position à laquelle est appliquée la référence à une ressource dynamique. Si vous définissez une valeur locale pour une propriété qui avait précédemment une expression DynamicResource comme valeur locale, DynamicResource est complètement supprimé. 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 pour DynamicResource, par opposition à StaticResource, extension de balisage. Consultez Vue d'ensemble des ressources pour la description des mérites relatifs et implications de performance de DynamicResource et StaticResource.

Le ResourceKey spécifié doit correspondre à une ressource existante déterminée par x:Key, attribut à quelque niveau que ce soit dans votre page, application, thèmes de contrôle disponibles et ressources externes ou ressources système ; les ressources seront recherchées dans cet ordre. Pour plus d'informations sur la recherche de ressources statiques et dynamiques, consultez Vue d'ensemble des ressources.

Une clé de ressource peut être une chaîne quelconque définie dans XamlName, grammaire. Elle peut également être tout autre type d'objet, tel qu'un Type. Une clé Type est un facteur fondamental déterminant la manière dont les contrôles peuvent être appelés par des thèmes. Pour plus d'informations, consultez Vue d'ensemble de la création de contrôles.

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

Une ressource peut également être référencée de manière déclarative par le biais de StaticResource, extension de balisage.

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 d'élément objet. Dans ce cas, la valeur de la propriété ResourceKey doit être spécifiée.

DynamicResource peut également être employé dans une utilisation d'attribut 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 de processeur XAMLWPF, la gestion de cette extension de balisage est définie par la classe DynamicResourceExtension.

DynamicResource est une extension de balisage. Des 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 va plus loin que 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'attributs. Cette convention indique au convertisseur XAML que l'extension de balisage doit traiter l'attribut. Pour plus d'informations, consultez Extensions de balisage et XAML.

Voir aussi

Concepts

Vue d'ensemble des ressources

Ressources et code

Vue d'ensemble du langage XAML

Extensions de balisage et XAML

Extensions de balisage et XAML

Référence

x:Key, attribut

StaticResource, extension de balisage