Passer des arguments
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. Pour ce faire, vous pouvez utiliser le code XAML de l’interface utilisateur d’application multiplateforme .NET (.NET MAUI) à 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 Arguments du constructeur Pass. - 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 Les méthodes d’usine d’appel.
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écifier un argument de type générique.
Les arguments peuvent être passés aux constructeurs et aux méthodes de fabrique à l’aide des primitives de langage XAML .NET MAUI suivantes :
x:Array
, qui correspond àArray
.x:Boolean
, qui correspond àBoolean
.x:Byte
, qui correspond àByte
.x:Char
, qui correspond àChar
.x:DateTime
, qui correspond àDateTime
.x:Decimal
, qui correspond àDecimal
.x:Double
, qui correspond àDouble
.x:Int16
, qui correspond àInt16
.x:Int32
, qui correspond àInt32
.x:Int64
, qui correspond àInt64
.x:Object
, qui correspond auObject
.x:Single
, qui correspond àSingle
.x:String
, qui correspond àString
.x:TimeSpan
, qui correspond àTimeSpan
.
À l’exception de x:DateTime
, les autres primitives de langage se trouvent dans la spécification XAML 2009.
Remarque
La primitive du x:Single
langage peut être utilisée pour passer des arguments float
.
Arguments de constructeur pass
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.
L’exemple suivant illustre l’utilisation de l’attribut x:Arguments
avec trois constructeurs différents Color :
<BoxView HeightRequest="150"
WidthRequest="150"
HorizontalOptions="Center">
<BoxView.Color>
<Color>
<x:Arguments>
<x:Single>0.9</x:Single>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
<BoxView HeightRequest="150"
WidthRequest="150"
HorizontalOptions="Center">
<BoxView.Color>
<Color>
<x:Arguments>
<x:Single>0.25</x:Single>
<x:Single>0.5</x:Single>
<x:Single>0.75</x:Single>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
<BoxView HeightRequest="150"
WidthRequest="150"
HorizontalOptions="Center">
<BoxView.Color>
<Color>
<x:Arguments>
<x:Single>0.8</x:Single>
<x:Single>0.5</x:Single>
<x:Single>0.2</x:Single>
<x:Single>0.5</x:Single>
</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 float
de gris comprise entre 0 (noir) et 1 (blanc). Le Color constructeur avec trois paramètres nécessite float
des valeurs rouges, vertes et bleues comprises entre 0 et 1. Le Color constructeur avec quatre paramètres ajoute un float
canal alpha comme quatrième paramètre.
Appeler des méthodes de fabrique
Les méthodes de fabrique peuvent être appelées en XAML .NET MAUI 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 classe définit un certain nombre de méthodes de fabrique, et l’exemple suivant montre comment appeler trois d’entre elles :
<BoxView HeightRequest="150"
WidthRequest="150"
HorizontalOptions="Center">
<BoxView.Color>
<Color x:FactoryMethod="FromRgba">
<x:Arguments>
<x:Byte>192</x:Byte>
<x:Byte>75</x:Byte>
<x:Byte>150</x:Byte>
<x:Byte>128</x:Byte>
</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 byte
arguments, qui représentent respectivement les valeurs rouge, vert, bleu et alpha, allant de 0 à 255. La FromHsla
méthode de fabrique nécessite quatre float
arguments, qui représentent respectivement la teinte, la saturation, la luminosité et les valeurs alpha, allant de 0 à 1. La FromHex
méthode factory nécessite un string
argument qui représente la couleur RVB hexadécimale (A)..
Spécifier 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 suivant :
<StackLayout>
<StackLayout.Margin>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS" Value="0,20,0,0" />
<On Platform="Android" Value="5, 10" />
</OnPlatform>
</StackLayout.Margin>
</StackLayout>
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 XAML.