Passage d’arguments en XAML
Cet article montre comment utiliser les attributs XAML qui peuvent être utilisés pour passer des arguments à des constructeurs non par défaut, appeler des méthodes de fabrique et spécifier le type d’un argument générique.
Vue d’ensemble
Il est souvent nécessaire d’instancier des objets avec des constructeurs qui nécessitent des arguments ou en appelant une méthode de création statique. Cela peut être obtenu en XAML à l’aide des attributs et x:FactoryMethod
des x:Arguments
attributs :
- L’attribut
x:Arguments
est utilisé pour spécifier des arguments de constructeur pour un constructeur non par défaut ou pour une déclaration d’objet de méthode de fabrique. Pour plus d’informations, consultez Passage d’arguments de constructeur. - L’attribut
x:FactoryMethod
est utilisé pour spécifier une méthode de fabrique qui peut être utilisée pour initialiser un objet. Pour plus d’informations, consultez Appeler les méthodes d’usine.
En outre, l’attribut x:TypeArguments
peut être utilisé pour spécifier les arguments de type générique au constructeur d’un type générique. Pour plus d’informations, consultez Spécification d’un argument de type générique.
Passage d’arguments de constructeur
Les arguments peuvent être passés à un constructeur non par défaut à l’aide de l’attribut x:Arguments
. Chaque argument de constructeur doit être délimité dans un élément XML qui représente le type de l’argument. Xamarin.Forms prend en charge les éléments suivants pour les types de base :
x:Array
x:Boolean
x:Byte
x:Char
x:DateTime
x:Decimal
x:Double
x:Int16
x:Int32
x:Int64
x:Object
x:Single
x:String
x:TimeSpan
L’exemple de code suivant illustre l’utilisation de l’attribut x:Arguments
avec trois Color
constructeurs :
<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
<BoxView.Color>
<Color>
<x:Arguments>
<x:Double>0.9</x:Double>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
<BoxView.Color>
<Color>
<x:Arguments>
<x:Double>0.25</x:Double>
<x:Double>0.5</x:Double>
<x:Double>0.75</x:Double>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
<BoxView.Color>
<Color>
<x:Arguments>
<x:Double>0.8</x:Double>
<x:Double>0.5</x:Double>
<x:Double>0.2</x:Double>
<x:Double>0.5</x:Double>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
Le nombre d’éléments dans la x:Arguments
balise et les types de ces éléments doit correspondre à l’un des Color
constructeurs. Le Color
constructeur avec un seul paramètre nécessite une valeur de nuances de gris comprise entre 0 (noir) et 1 (blanc). Le Color
constructeur avec trois paramètres nécessite une valeur rouge, verte et bleue comprise entre 0 et 1. Le Color
constructeur avec quatre paramètres ajoute un canal alpha comme quatrième paramètre.
Les captures d’écran suivantes montrent le résultat de l’appel de chaque Color
constructeur avec les valeurs d’argument spécifiées :
Appels de méthodes de fabrique
Les méthodes de fabrique peuvent être appelées en XAML en spécifiant le nom de la méthode à l’aide de l’attribut x:FactoryMethod
et ses arguments à l’aide de l’attribut x:Arguments
. Une méthode de fabrique est une public static
méthode qui retourne des objets ou des valeurs du même type que la classe ou la structure qui définit les méthodes.
La Color
structure définit un certain nombre de méthodes de fabrique, et l’exemple de code suivant illustre l’appel de trois d’entre eux :
<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
<BoxView.Color>
<Color x:FactoryMethod="FromRgba">
<x:Arguments>
<x:Int32>192</x:Int32>
<x:Int32>75</x:Int32>
<x:Int32>150</x:Int32>
<x:Int32>128</x:Int32>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
<BoxView.Color>
<Color x:FactoryMethod="FromHsla">
<x:Arguments>
<x:Double>0.23</x:Double>
<x:Double>0.42</x:Double>
<x:Double>0.69</x:Double>
<x:Double>0.7</x:Double>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
<BoxView.Color>
<Color x:FactoryMethod="FromHex">
<x:Arguments>
<x:String>#FF048B9A</x:String>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
Le nombre d’éléments dans la x:Arguments
balise, ainsi que les types de ces éléments, doit correspondre aux arguments de la méthode de fabrique appelée. La FromRgba
méthode de fabrique nécessite quatre Int32
paramètres, qui représentent respectivement les valeurs rouge, vert, bleu et alpha, allant de 0 à 255. La FromHsla
méthode de fabrique nécessite quatre Double
paramètres, qui représentent respectivement la teinte, la saturation, la luminosité et les valeurs alpha, allant de 0 à 1. La FromHex
méthode de fabrique nécessite une String
valeur qui représente la couleur RVB hexadécimale (A)..
Les captures d’écran suivantes montrent le résultat de l’appel de chaque Color
méthode de fabrique avec les valeurs d’argument spécifiées :
Spécification d’un argument de type générique
Les arguments de type générique pour le constructeur d’un type générique peuvent être spécifiés à l’aide de l’attribut x:TypeArguments
, comme illustré dans l’exemple de code suivant :
<ContentPage ...>
<StackLayout>
<StackLayout.Margin>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS" Value="0,20,0,0" />
<On Platform="Android" Value="5, 10" />
<On Platform="UWP" Value="10" />
</OnPlatform>
</StackLayout.Margin>
</StackLayout>
</ContentPage>
La OnPlatform
classe est une classe générique et doit être instanciée avec un x:TypeArguments
attribut qui correspond au type cible. Dans la On
classe, l’attribut Platform
peut accepter une valeur unique string
ou plusieurs valeurs délimitées par des virgules string
. Dans cet exemple, la StackLayout.Margin
propriété est définie sur une plateforme spécifique Thickness
à la plateforme.
Pour plus d’informations sur les arguments de type générique, consultez Generics in Xamarin.Forms XAML.