ComponentResourceKey, extension de balisage

Définit et référence des clés pour les 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 sur une classe.

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

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

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

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

Utilisation des attributs XAML (demande de ressource, compact)

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

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

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

Valeurs XAML

Valeur Description
targetTypeName Nom du type CLR (Public Common Language Runtime) défini dans l’assembly de ressources.
targetID Clé de la ressource. Lorsque les ressources sont recherchées, targetID elles sont analogues à la directive x :Key de la ressource.

Notes

Comme indiqué dans les utilisations ci-dessus, une utilisation de l’extension de balisage {ComponentResourceKey} se trouve à deux emplacements :

  • Définition d’une clé dans un dictionnaire de ressources de thème, comme fourni par un auteur de contrôle.

  • Accès à une ressource de thème à partir de l’assembly, lorsque vous retemplatez le contrôle, mais que vous souhaitez utiliser des valeurs de propriété provenant des ressources fournies par les thèmes du contrôle.

Pour référencer des ressources de composant provenant de thèmes, il est généralement recommandé d’utiliser {DynamicResource} plutôt que {StaticResource}. Ceci est illustré dans les utilisations. {DynamicResource} est recommandé, car le thème lui-même peut être modifié par l’utilisateur. Si vous souhaitez que la ressource de composant qui correspond le plus étroitement à l’intention de l’auteur du contrôle pour prendre en charge un thème, vous devez activer également la référence de votre ressource de composant.

Identifie TypeInTargetAssembly un type qui existe dans l’assembly cible où la ressource est réellement définie. Un ComponentResourceKey peut être défini et utilisé indépendamment de savoir exactement où il TypeInTargetAssembly est défini, mais doit éventuellement résoudre le type par le biais d’assemblys référencés.

Une utilisation ComponentResourceKey courante consiste à définir des clés qui sont ensuite exposées en tant que membres d’une classe. Pour cette utilisation, vous utilisez le ComponentResourceKey constructeur de classe, et non l’extension de balisage. Pour plus d’informations, consultez ComponentResourceKeyla section « Définition et référencement des clés pour les ressources de thème » de la rubrique Vue d’ensemble de la création du contrôle.

Pour établir des clés et référencer des ressources clé, la syntaxe d’attribut est couramment utilisée pour l’extension de ComponentResourceKey balisage.

La syntaxe compacte indiquée s’appuie sur la signature du constructeur et l’utilisation ComponentResourceKey des paramètres positionnels d’une extension de balisage. L’ordre dans lequel le targetTypeName et targetID sont donnés est important. La syntaxe détaillée s’appuie sur le ComponentResourceKey constructeur sans paramètre, puis définit la TypeInTargetAssemblyResourceId syntaxe et d’une manière analogue à une syntaxe d’attribut vraie 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 ces deux alternatives (compact et détaillé) sont décrits plus en détail dans la rubrique Extensions de balisage et XAML WPF.

Techniquement, la valeur de targetID n’importe quel objet ne doit pas être une chaîne. Toutefois, l’utilisation la plus courante dans WPF consiste à aligner la targetID valeur avec les formulaires qui sont des chaînes et où ces chaînes sont valides dans la grammaire XamlName.

ComponentResourceKey peut être utilisé dans la syntaxe de l’élément objet. Dans ce cas, la spécification de la valeur des propriétés et ResourceId des TypeInTargetAssembly propriétés est nécessaire 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 ComponentResourceKey classe.

ComponentResourceKey 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, 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 et XAML WPF.

Voir aussi