Partager via


x:Arguments, directive

Packages des arguments de construction pour une déclaration d’élément d’objet sans paramètre en XAML ou pour une déclaration d’objet de méthode de fabrique.

Utilisation de l’élément XAML (constructeur sans paramètre)

<object ...>
  <x:Arguments>
    oneOrMoreObjectElements
  </x:Arguments>
</object>

Utilisation de l’élément XAML (méthode de fabrique)

<object x:FactoryMethod="methodName"...>
  <x:Arguments>
    oneOrMoreObjectElements
  </x:Arguments>
</object>

Valeurs XAML

Valeur Description
oneOrMoreObjectElements Un ou plusieurs éléments d’objet qui spécifient des arguments à passer au constructeur sans paramètre de stockage ou à la méthode de fabrique.

L’utilisation classique consiste à utiliser du texte d’initialisation dans les éléments d’objet pour spécifier les valeurs d’argument réelles. Consultez la section Exemples.

L’ordre des éléments est significatif. Les types XAML dans l’ordre doivent correspondre aux types et à l’ordre de type de la surcharge de méthode de stockage ou de méthode de stockage.
methodName Nom de la méthode de fabrique qui doit traiter tous les x:Arguments arguments.

Dépendances

x:FactoryMethod peut modifier l’étendue et le comportement où x:Arguments il s’applique.

Si aucune valeur n’est x:FactoryMethod spécifiée, x:Arguments s’applique à d’autres signatures (non par défaut) des constructeurs de stockage.

Si x:FactoryMethod elle est spécifiée, x:Arguments s’applique à une surcharge de la méthode nommée.

Notes

XAML 2006 peut prendre en charge l’initialisation non par défaut par le biais du texte d’initialisation. Toutefois, l’application pratique d’une technique de construction de texte d’initialisation est limitée. Le texte d’initialisation est traité comme une chaîne de texte unique ; Par conséquent, elle ajoute uniquement une fonctionnalité d’initialisation de paramètre unique, sauf si un convertisseur de type est défini pour le comportement de construction qui peut analyser des éléments d’informations personnalisés et des délimiteurs personnalisés de la chaîne. En outre, la chaîne de texte en logique objet est potentiellement un convertisseur de type par défaut natif de l’analyseur XAML donné pour la gestion des primitives autres qu’une chaîne true.

L’utilisation x:Arguments XAML n’est pas l’utilisation des éléments de propriété dans le sens classique, car le balisage de directive ne référence pas le type de l’élément objet contenant. Il est plus semblable à d’autres directives telles que x:Code l’emplacement où l’élément délimite une plage dans laquelle le balisage doit être interprété comme autre que la valeur par défaut pour le contenu enfant. Dans ce cas, le type XAML de chaque élément objet communique des informations sur les types d’arguments, qui est utilisé par les analyseurs XAML pour déterminer quelle signature de méthode de fabrique de constructeur spécifique une x:Arguments utilisation tente de référencer.

x:Arguments pour qu’un élément d’objet en cours de construction doit précéder d’autres éléments de propriété, de contenu, de texte interne ou de chaînes d’initialisation de l’élément objet. Les éléments d’objet au sein x:Arguments de l’objet peuvent inclure des attributs et des chaînes d’initialisation, comme permis par ce type XAML et son constructeur de stockage ou sa méthode de fabrique. Pour l’objet ou les arguments, vous pouvez spécifier des types XAML personnalisés ou des types XAML qui se trouvent autrement en dehors de l’espace de noms XAML par défaut en référençant les mappages de préfixes établis.

Les processeurs XAML utilisent les instructions suivantes pour déterminer comment les arguments spécifiés dans x:Arguments doivent être utilisés pour construire un objet. Si x:FactoryMethod elle est spécifiée, les informations sont comparées à celles spécifiées x:FactoryMethod (notez que la valeur du nom de la méthode est le nom de x:FactoryMethod la méthode et que la méthode nommée peut avoir des surcharges. Si x:FactoryMethod elle n’est pas spécifiée, les informations sont comparées à l’ensemble de toutes les surcharges de constructeur public de l’objet. La logique de traitement XAML compare ensuite le nombre de paramètres et sélectionne la surcharge avec une arité correspondante. S’il existe plusieurs correspondances, le processeur XAML doit comparer les types des paramètres en fonction des types XAML des éléments d’objet fournis. S’il existe encore plusieurs correspondances, le comportement du processeur XAML n’est pas défini. Si une x:FactoryMethod valeur est spécifiée, mais que la méthode ne peut pas être résolue, un processeur XAML doit lever une exception.

Une utilisation d’attribut <x:Arguments>string</x:Arguments> XAML est techniquement possible. Toutefois, cela ne fournit aucune fonctionnalité au-delà de ce qui peut être fait autrement par le biais de convertisseurs de texte et de type d’initialisation, et l’utilisation de cette syntaxe n’est pas l’intention de conception des fonctionnalités de méthode de fabrique XAML 2009.

Exemples

L’exemple suivant montre une signature de constructeur sans paramètre, puis l’utilisation XAML de x:Arguments cette signature.

public class Food {
  private string _name;
  private Int32 _calories;
  public Food(string name, Int32 calories) {
      _name=name;
      _calories=calories;
  }
}
<my:Food>
  <x:Arguments>
      <x:String>Apple</x:String>
      <x:Int32>150</x:Int32>
  </x:Arguments>
</my:Food>

L’exemple suivant montre une signature de méthode de fabrique cible, puis l’utilisation XAML de x:Arguments cette signature.

public Food TryLookupFood(string name)
{
switch (name) {
  case "Apple": return new Food("Apple",150);
  case "Chocolate": return new Food("Chocolate",200);
  case "Cheese": return new Food("Cheese", 450);
  default: {return new Food(name,0);
}
}
<my:Food x:FactoryMethod="TryLookupFood">
  <x:Arguments>
      <x:String>Apple</x:String>
  </x:Arguments>
</my:Food>

Voir aussi