Espaces de noms XAML et mappage d'espace de noms

Mise à jour : novembre 2007

Cette rubrique explique plus en détail la présence et la finalité de deux mappages d'espace de noms XML qui figurent dans la balise racine de chaque fichier XAML (Extensible Application Markup Language). Elle décrit également comment produire des mappages similaires pour utiliser des éléments définis dans votre propre code et/ou dans des assemblys distincts.

Cette rubrique comprend les sections suivantes.

  • Déclarations des espaces de noms XAML et WPF
  • Mappage aux classes et assemblys personnalisés
  • Mappage d'espaces de noms CLR à des espaces de noms XML dans un assembly
  • Rubriques connexes

Déclarations des espaces de noms XAML et WPF

Deux déclarations d'espace de noms XML se trouvent dans les déclarations d'espace de noms figurant dans la balise racine de nombreux fichiers XAML (Extensible Application Markup Language). La première déclaration mappe l'espace de noms Windows Presentation Foundation (WPF) global comme valeur par défaut :

xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"

La deuxième déclaration mappe (généralement) un espace de noms XAML (Extensible Application Markup Language) distinct au préfixe x:.

xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"

La relation entre ces déclarations est effectivement que XAML est une définition de langage et que WPF est une implémentation qui utilise XAML comme langage. Le langage XAML spécifie certains éléments de langage qui devraient être implémentés à des fins de conformité et chacun d'eux doit être accessible par le biais des implémentations du processeur XAML appliquées à l'espace de noms XAML. L'implémentation WPF et son modèle de programmation prévu utilisent généralement l'espace de noms XML par défaut pour leurs propres API et un préfixe mappé distinct pour la syntaxe de balisage attendue en XAML. Par convention, ce préfixe est x: et cette même convention x: est suivie par des modèles de projet, un exemple de code et la documentation des fonctions linguistiques dans ce Kit de développement logiciel (SDK). L'espace de noms XAML définit de nombreuses fonctions courantes qui sont nécessaires y compris pour les applications WPF de base. Par exemple, pour joindre tout code-behind à un fichier XAML par le biais d'une classe partielle, vous devez nommer cette classe comme attribut x:Class dans l'élément racine du fichier XAML approprié. Ou bien, tout élément tel que défini dans une page XAML à laquelle vous souhaitez accéder comme une ressource à clé doit avoir l'attribut x:Key renseigné par l'élément en question. Pour plus d'informations sur ces questions et d'autres aspects de XAML, consultez Vue d'ensemble du langage XAML ou Terminologie de la syntaxe XAML.

Mappage aux classes et assemblys personnalisés

Vous pouvez mapper des espaces de noms XML à des assemblys à l'aide d'une série de jetons dans une déclaration de préfixe xmlns, de la même manière que les espaces de noms WPF et XAML standard sont mappés aux préfixes.

La syntaxe prend les valeurs et les jetons nommés possibles suivants :

clr-namespace: Espace de noms Common Language Runtime (CLR) déclaré dans l'assembly contenant les types publics à exposer comme éléments.

assembly= Assembly contenant une partie ou l'intégralité de l'espace de noms CLR référencé. Cette valeur se limite généralement au nom de l'assembly, et ne comprend pas le chemin d'accès. Le chemin d'accès de cet assembly doit être établi comme une référence du projet dans le fichier du projet qui produit le code XAML compilé. Il est également possible, pour incorporer les versions et les signatures avec nom fort, que la valeur soit une chaîne, comme défini par AssemblyName.

Notez que le jeton clr-namespace est séparé de sa valeur par deux-points (:) alors que le caractère qui sépare le jeton assembly de sa valeur est le signe égal (=). Le caractère à utiliser entre ces deux jetons est un point-virgule. N'incluez par ailleurs pas d'espace blanc n'importe où dans la déclaration. Par exemple :

xmlns:custom="clr-namespace:SDKSample;assembly=SDKSampleLibrary"

Mappage aux assemblys actuels

assembly peut être omis si le clr-namespace référencé est défini dans le même assembly que le code d'application qui fait référence aux classes personnalisées. Une syntaxe équivalente dans ce cas consiste à spécifier assembly=, sans jeton de chaîne après le signe égal.

Les classes personnalisées ne peuvent pas être utilisées comme élément racine d'une page si elles sont définies dans le même assembly. Les classes partielles ne doivent pas être mappées ; seules les classes qui ne sont pas la classe partielle d'une page dans votre application doivent être mappées si vous prévoyez de les référencer comme des éléments en XAML.

Mappage d'espaces de noms CLR à des espaces de noms XML dans un assembly

WPF définit un attribut CLR qui est consommé par les processeurs XAML pour mapper plusieurs espaces de noms CLR à un seul espace de noms XML. Cet attribut, XmlnsDefinitionAttribute, est placé au niveau de l'assembly dans le code source qui produit ce dernier. Le code source d'assembly WPF utilise cet attribut pour mapper divers espaces de noms communs, tels que System.Windows et System.Windows.Controls, à l'espace de noms https://schemas.microsoft.com/winfx/2006/xaml/presentation.

XmlnsDefinitionAttribute prend deux paramètres : le nom d'espace de noms XML, et le nom d'espace de noms CLR. Il peut exister plusieurs XmlnsDefinitionAttribute pour mapper plusieurs espaces de noms CLR au même espace de noms XML. Une fois mappés, les membres de ces espaces de noms peuvent également être référencés sans qualification complète, si vous le souhaitez, en fournissant l'instruction using appropriée dans la page code-behind de la classe partielle. Pour plus d'informations, consultez XmlnsDefinitionAttribute.

Voir aussi

Concepts

Vue d'ensemble du langage XAML

Autres ressources

Fonctionnement des espaces de noms XML