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 indiqué 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 les espaces de noms par défaut, le préfixe étant 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 le CODE XAML avec un préfixe de x sont utilisés pour les éléments et les attributs intrinsèques au 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 autre que celui 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 classe doit correspondre au nom de classe du fichier code-behind. Notez que cette construction peut uniquement apparaître 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é unique définie par l’utilisateur pour chaque ressource d’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 pour le 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 x:Arguments attributs et x:FactoryMethod , consultez Passage d’arguments en XAML. Pour plus d’informations sur l’attribut x:TypeArguments , consultez Génériques en XAML avec Xamarin.Forms.

Notes

En plus des 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 Utilisation d’extensions de balisage XAML.

En XAML, les déclarations d’espace de noms héritent d’un élément parent à un é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é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, 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 mots clés suivants dans la déclaration d’espace de noms :

  • clr-namespace : ou en utilisant : - 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 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 en tant que référence dans le fichier 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.

Notez que le caractère qui sépare le clr-namespace jeton ou using 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>

Vous pouvez également écrire ceci comme suit :

<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. 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’un 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 Schémas d’espace de noms personnalisés XAML.

Résumé

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. XAML utilise l’attribut XML pour les xmlns 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.