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 key ResourceDictionary.Add si la ressource a été créée dans le code. |
Notes
Un DynamicResource
va créer une expression temporaire pendant la compilation initiale et différer ainsi la recherche des ressources jusqu’à ce que la valeur de ressource demandée soit réellement requise pour construire un objet. Cela peut se présenter après le chargement de la page XAML. La valeur de la ressource est trouvée en fonction de la recherche par clé dans 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é de la compilation.
Important
En termes de priorité des propriétés 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, 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 par DynamicResource
opposition à une extension de balisage StaticResource. Consultez Ressources XAML pour une discussion sur les mérites relatifs et les implications sur les performances de DynamicResource
et StaticResource
.
Le spécifié ResourceKey doit correspondre à une ressource existante déterminée par x:Key Directive à 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 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 fondamentale pour la façon dont les contrôles peuvent être stylés par thèmes. Pour plus d’informations, consultez Vue d’ensemble de la création de contrôles.
Les API pour la recherche de valeurs de ressource, telles que FindResource, suivent la même logique de recherche de ressources que celle utilisée par DynamicResource
.
L’autre moyen déclaratif de référence d’une ressource est une 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 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, 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.