Espaces de noms XAML

XAML utilise l’attribut xmlns XML pour les déclarations d’espace de noms. Il existe deux déclarations d’espace de noms XAML qui se trouvent toujours dans l’élément racine d’un fichier XAML. Le premier définit l’espace de noms par défaut :

xmlns="http://schemas.microsoft.com/dotnet/2021/maui"

L’espace de noms par défaut spécifie que les éléments définis dans le fichier XAML sans préfixe font référence à des classes d’interface utilisateur d’application multiplateforme .NET (.NET MAUI), telles que ContentPage, Labelet Button.

La deuxième déclaration d’espace de noms utilise le x préfixe :

xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"

XAML utilise des préfixes pour déclarer des espaces de noms non par défaut, avec le préfixe utilisé lors du référencement de types dans l’espace de noms. La x déclaration d’espace de noms spécifie que les éléments définis dans XAML avec un préfixe sont x utilisés pour les éléments et les attributs intrinsèques au code XAML (en particulier la spécification XAML 2009).

Le tableau suivant présente les x constructions prises en charge par .NET MAUI :

Construction Description
x:Arguments Spécifie les arguments de constructeur pour un constructeur non par défaut ou pour une déclaration d’objet de méthode de fabrique.
x:Class Spécifie l’espace de noms et le nom de classe d’une classe définie en XAML. Le nom de la classe doit correspondre au nom de classe du fichier code-behind. Notez que cette construction ne peut apparaître que dans l’élément racine d’un fichier XAML.
x:DataType Spécifie le type de l’objet auquel l’élément XAML, et ses enfants, seront liés.
x:FactoryMethod Spécifie une méthode de fabrique qui peut être utilisée pour initialiser un objet.
x:FieldModifier Spécifie le niveau d’accès pour les champs générés pour les éléments XAML nommés.
x:Key Spécifie une clé définie par l’utilisateur unique pour chaque ressource dans un ResourceDictionary. La valeur de la clé est utilisée pour récupérer la ressource XAML et est généralement utilisée comme argument pour l’extension de StaticResource balisage.
x:Name Spécifie un nom d’objet runtime pour l’élément XAML. Le paramètre x:Name est similaire à la déclaration d’une variable dans le code.
x:TypeArguments Spécifie les arguments de type générique au constructeur d’un type générique.

Pour plus d’informations sur l’attribut x:DataType , consultez liaisons compilées. Pour plus d’informations sur l’attribut x:FieldModifier , consultez modificateurs de champ. Pour plus d’informations sur les attributs et les x:Arguments attributs, consultez Les arguments Pass.x:FactoryMethod Pour plus d’informations sur l’attribut x:TypeArguments , consultez Génériques.

Construction Description
x:Arguments Spécifie les arguments de constructeur pour un constructeur non par défaut ou pour une déclaration d’objet de méthode de fabrique.
x:Class Spécifie l’espace de noms et le nom de classe d’une classe définie en XAML. Le nom de la classe doit correspondre au nom de classe du fichier code-behind. Notez que cette construction ne peut apparaître que dans l’élément racine d’un fichier XAML.
x:ClassModifier Spécifie le niveau d’accès de la classe générée dans l’assembly.
x:DataType Spécifie le type de l’objet auquel l’élément XAML, et ses enfants, seront liés.
x:FactoryMethod Spécifie une méthode de fabrique qui peut être utilisée pour initialiser un objet.
x:FieldModifier Spécifie le niveau d’accès pour les champs générés pour les éléments XAML nommés.
x:Key Spécifie une clé définie par l’utilisateur unique pour chaque ressource dans un ResourceDictionary. La valeur de la clé est utilisée pour récupérer la ressource XAML et est généralement utilisée comme argument pour l’extension de StaticResource balisage.
x:Name Spécifie un nom d’objet runtime pour l’élément XAML. Le paramètre x:Name est similaire à la déclaration d’une variable dans le code.
x:TypeArguments Spécifie les arguments de type générique au constructeur d’un type générique.

Pour plus d’informations sur l’attribut x:ClassModifier , consultez modificateurs de classe. Pour plus d’informations sur l’attribut x:DataType , consultez liaisons compilées. Pour plus d’informations sur l’attribut x:FieldModifier , consultez modificateurs de champ. Pour plus d’informations sur les attributs et les x:Arguments attributs, consultez Les arguments Pass.x:FactoryMethod Pour plus d’informations sur l’attribut x:TypeArguments , consultez Génériques.

Remarque

Outre les constructions répertoriées ci-dessus, .NET MAUI inclut également des extensions de balisage qui peuvent être consommées via le préfixe d’espace x de noms. Pour plus d’informations, consultez Utiliser des extensions de balisage XAML.

En XAML, les déclarations d’espace de noms héritent de l’élément parent à l’élément enfant. Par conséquent, lors de la définition d’un espace de noms dans l’élément racine d’un fichier XAML, tous les éléments de ce fichier héritent de la déclaration d’espace de noms.

Déclarer des espaces de noms pour les types

Les types peuvent être référencés en XAML en déclarant un espace de noms XAML avec un préfixe, avec la déclaration d’espace de noms spécifiant le nom de l’espace de noms CLR (Common Language Runtime) et éventuellement un nom d’assembly. Pour ce faire, définissez des valeurs pour les mot clé suivantes dans la déclaration d’espace de noms :

  • clr-namespace: ou using: : l’espace de noms CLR déclaré dans l’assembly qui contient les types à exposer en tant qu’éléments XAML. Cette mot clé est requise.
  • assembly= : assembly qui contient l’espace de noms CLR référencé. Cette valeur est le nom de l’assembly, sans l’extension de fichier. Le chemin d’accès à l’assembly doit être établi comme référence dans le projet qui contient le fichier XAML qui référencera l’assembly. Cette mot clé peut être omise si la valeur clr-namespace se trouve dans le même assembly que le code d’application qui référence les types.

Remarque

Le caractère séparant le ou using le clr-namespace jeton de sa valeur est un signe deux-points, tandis que le caractère séparant le assembly jeton de sa valeur est un signe égal. Le caractère à utiliser entre les deux jetons est un point-virgule.

L’exemple de code suivant montre une déclaration d’espace de noms XAML :

<ContentPage ... xmlns:local="clr-namespace:MyMauiApp">
  ...
</ContentPage>

Vous pouvez également écrire ce qui suit :

<ContentPage ... xmlns:local="using:MyMauiApp">
  ...
</ContentPage>

Le local préfixe est une convention utilisée pour indiquer que les types dans l’espace de noms sont locaux pour l’application. Sinon, si les types se trouvent dans un autre assembly, le nom de l’assembly doit également être défini dans la déclaration d’espace de noms :

<ContentPage ... xmlns:controls="clr-namespace:Controls;assembly=MyControlLibrary" ...>
  ...
</ContentPage>

Le préfixe d’espace de noms est ensuite spécifié lors de la déclaration d’une instance d’un type à partir d’un espace de noms importé :

<controls:Expander IsExpanded="True">
    ...
</controls:Expander>

Pour plus d’informations sur la définition d’un schéma d’espace de noms personnalisé, consultez Schémas d’espace de noms personnalisés.