DynamicResource, extension de balisage

Fournit une valeur pour n’importe quel attribut de propriété XAML en différant cette valeur en tant que référence à une ressource définie. Le comportement de recherche pour 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

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

Remarques

Un DynamicResource crée une expression temporaire pendant la compilation initiale et par conséquent, la recherche des ressources est différée jusqu’à ce que la valeur de ressource demandée soit réellement requise pour construire un objet. Cela peut se faire éventuellement après le chargement de la page XAML. 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.

Important

En termes de priorité des propriétés de dépendance, une DynamicResource expression est équivalente à la position à laquelle 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, le 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 à une DynamicResource. Consultez ressources XAML pour une discussion sur les avantages relatifs et les implications relatives aux performances de et StaticResource .

Le spécifié ResourceKey doit correspondre à une ressource existante déterminée par la ResourceKey à 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. 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 des thèmes. Pour plus d’informations, consultez Vue d’ensemble de la création de contrôles.

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 .

Les autres méthodes déclaratives de référencement d’une ressource sont en tant qu' extension de balisage StaticResource.

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 spécification de la valeur de la ResourceKey propriété est obligatoire.

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, qui est la Convention selon 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