Extension de balisage ComponentResourceKey
Définit et référence des clés pour les ressources chargées à partir d'assemblies 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 (paramètre de la clé, compact)
<object x:Key="{ComponentResourceKey {x:Type targetTypeName}, targetID}" ... />
Utilisation des attributs XAML (paramètre 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 (requête de ressource, en détail)
<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 sera équivalent à la directive x:Key de la ressource. |
Remarques
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éder à une ressource de thème à partir de l’assembly, lorsque vous recréez le contrôle mais que vous souhaitez utiliser des valeurs de propriétés qui proviennent de 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 de {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 voulez que la ressource de composant corresponde le plus étroitement possible à l'intention de l'auteur du contrôle pour le soutien d'un thème, vous devez également activer la référence dynamique de votre ressource de composant.
La TypeInTargetAssembly identifie un type qui existe dans l’assembly cible où la ressource est réellement définie. Une ComponentResourceKey
peut être définie et utilisée indépendamment de savoir exactement où l'TypeInTargetAssembly est définie, mais elle devra finalement résoudre le type par le biais d'assemblages de référence.
Une utilisation courante pour ComponentResourceKey consiste à définir des clés qui sont ensuite exposées en tant que membres d’une classe. Pour cette utilisation, vous 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 des 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 à clé, la syntaxe d’attribut est couramment utilisée pour l’extension de balisage ComponentResourceKey
.
La syntaxe compacte indiquée s’appuie sur la signature de constructeur ComponentResourceKey et l’utilisation des paramètres positionnels d’une extension de balisage. L’ordre dans lequel les targetTypeName
et les targetID
sont donnés est important. La syntaxe détaillée repose sur le constructeur sans paramètre ComponentResourceKey, puis elle définit TypeInTargetAssembly et ResourceId d’une manière semblable à celle d'un véritable attribut sur un élément d’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 WPF XAML.
Techniquement, la valeur de targetID
peut être n’importe quel objet, il n’est pas obligé d’être une chaîne. Toutefois, l’utilisation la plus courante dans WPF consiste à aligner la valeur
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 TypeInTargetAssembly et ResourceId 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 classe ComponentResourceKey.
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 « Markup Extensions » et «WPF XAML ».
Voir aussi
.NET Desktop feedback