ComponentResourceKey, extension de balisage

Définit et référence des clés pour des ressources chargées à partir d'assemblys externes. Cela permet à une recherche de ressources de spécifier un type cible dans un assembly, plutôt qu'un dictionnaire de ressources explicite dans un assembly ou une classe.

Utilisation des attributs XAML (définition de clé, compact)

<object x:Key="{ComponentResourceKey {x:Type targetTypeName}, targetID}" .../>

Utilisation d'attributs XAML (définition de clé, détaillé)

<object x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}" .../>

Utilisation d'attributs XAML (demande de ressource, compact)

<object property="{DynamicResource {ComponentResourceKey {x:Type targetTypeName}, targetID}}" .../>

Utilisation d'attributs XAML (demande de ressource, détaillé)

<object property="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}}" .../>

Valeurs XAML

targetTypeName

Nom du type common language runtime (CLR) public défini dans l'assembly de ressource.

targetID

Clé pour la ressource. Lors de la recherche de ressources, targetID équivaut au x:Key, directive de la ressource.

Notes

Comme indiqué dans les utilisations ci-dessus, une utilisation d'une extension de balisage {ComponentResourceKey } se trouve à deux endroits :

  • Définition d'une clé dans un dictionnaire de ressources du thème, tel que fourni par un auteur de contrôle.

  • Accès à une ressource du thème à partir de l'assembly, lorsque vous redéfinissez le modèle du contrôle mais souhaitez utiliser les valeurs de propriété qui viennent de ressources fournies par les thèmes du contrôle.

Pour le référencement des ressources de composant qui proviennent de thèmes, il est recommandé en général que vous utilisiez {DynamicResource} plutôt que {StaticResource}. Cela s'affiche dans les utilisations. {DynamicResource} est recommandé parce que le thème lui-même peut être modifié par l'utilisateur. Si vous voulez la ressource de composant qui correspond le plus à l'intention de contrôle de l'auteur pour la prise en charge d'un thème, vous devez permettre à votre référence de ressource de composant d'être également dynamique.

Le TypeInTargetAssembly identifie un type qui existe dans l'assembly cible où la ressource est réellement définie. Vous pouvez définir et utiliser une ComponentResourceKey que vous sachiez ou non exactement où le TypeInTargetAssembly est défini. Elle doit toutefois finalement résoudre le type via les assemblys référencés.

La ComponentResourceKey est souvent utilisée pour définir des clés qui sont ensuite exposées comme membres d'une classe. Pour cela, utilisez le constructeur de classe ComponentResourceKey, et non l'extension de balisage. Pour plus d'informations, consultez ComponentResourceKey, ou la section « Définition et référencement de clés pour les ressources de thème » de la rubrique Vue d'ensemble de la création de contrôles.

Pour établir des clés et référencer des ressources de clé, la syntaxe d'attributs est utilisée communément pour l'extension de balisage ComponentResourceKey.

La syntaxe compacte indiquée s'appuie sur la signature de constructeur ComponentResourceKey.ComponentResourceKey et l'utilisation du paramètre positionnel d'une extension de balisage. L'ordre dans lequel le targetTypeName et le targetID sont donnés est important. La syntaxe détaille repose sur le constructeur ComponentResourceKey.ComponentResourceKey par défaut, puis définit TypeInTargetAssembly et ResourceId à la manière d'une syntaxe d'attribut réelle sur un élément objet. Dans la syntaxe détaillée, l'ordre dans lequel les propriétés sont définies n'est pas important. La relation et les mécanismes de cette alternative (compacte et détaillée) sont décrits plus en détails dans la rubrique Extensions de balisage et XAML WPF.

Techniquement, la valeur de targetID peut être n'importe quel objet ; elle ne doit pas nécessairement être une chaîne. Toutefois, l'utilisation la plus courante de WPF est d'aligner la valeur targetID avec les formulaires qui sont des chaînes, où ces chaînes sont valides dans le XamlName, grammaire.

ComponentResourceKey peut être utilisé dans la syntaxe d'élément objet. Dans ce cas, il convient de spécifier la valeur des propriétés TypeInTargetAssembly et ResourceId pour initialiser correctement l'extension.

Dans l'implémentation du lecteur XAML WPF, la gestion de cette extension de balisage est définie par la classe ComponentResourceKey.

ComponentResourceKey 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 WPF.

Voir aussi

Référence

ComponentResourceKey

ControlTemplate

Concepts

Vue d'ensemble de la création de contrôles

Vue d'ensemble du langage XAML (WPF)

Extensions de balisage et XAML WPF