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 au Object.
  • 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.