Espaces de noms XAML dans Xamarin.Forms

XAML utilise l’attribut XML xmlns pour les déclarations d’espace de noms. Cet article présente la syntaxe de l’espace de noms XAML et montre comment déclarer un espace de noms XAML pour accéder à un type.

Vue d’ensemble

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, comme illustré dans l’exemple de code XAML suivant :

xmlns="http://xamarin.com/schemas/2014/forms"

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 à Xamarin.Forms des classes, telles que ContentPage.

La deuxième déclaration d’espace de noms utilise le x préfixe, comme illustré dans l’exemple de code XAML suivant :

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

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

Le tableau suivant présente les attributs d’espace x de noms pris en charge par Xamarin.Forms:

Construction Description
x:Arguments Spécifie les arguments de constructeur pour un constructeur qui n’est pas un constructeur 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 pour 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 sert généralement d’argument pour l’extension de balisage StaticResource.
x:Name Spécifie un nom d’objet de 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 Passage d’arguments en XAML.x:FactoryMethod Pour plus d’informations sur l’attribut x:TypeArguments , consultez Génériques en XAML avec Xamarin.Forms.

Remarque

Outre les attributs d’espace de noms répertoriés ci-dessus, Xamarin.Forms 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 Consommation d’extensions de balisage XAML.

En XAML, les déclarations d’espace de noms héritent de l’élément enfant de l’élément parent. 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éclaration d’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, en spécifiant le nom de l’espace de noms CLR (Common Language Runtime) dans la déclaration d’espace de noms et en spécifiant éventuellement un nom d’assembly. Pour ce faire, définissez des valeurs pour les mots clés suivants 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. Ce mot clé est obligatoire.
  • 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 fichier projet qui contient le fichier XAML qui référencera l’assembly. Ce mot clé peut être omis si la valeur clr-namespace se trouve dans le même assembly que le code d’application qui référence les types.

Notez que 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:HelloWorld" ...>
  ...
</ContentPage>

Cela peut également être écrit comme ceci :

<ContentPage ... xmlns:local="using:HelloWorld" ...>
  ...
</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, comme illustré dans l’exemple de code XAML suivant :

<ContentPage ... xmlns:behaviors="clr-namespace:Behaviors;assembly=BehaviorsLibrary" ...>
  ...
</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é, comme illustré dans l’exemple de code XAML suivant :

<ListView ...>
  <ListView.Behaviors>
    <behaviors:EventToCommandBehavior EventName="ItemSelected" ... />
  </ListView.Behaviors>
</ListView>

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

Résumé

Cet article a présenté la syntaxe de l’espace de noms XAML et a montré comment déclarer un espace de noms XAML pour accéder à un type. XAML utilise l’attribut xmlns XML pour les déclarations d’espace de noms, et les types peuvent être référencés en XAML en déclarant un espace de noms XAML avec un préfixe.