Partager via


Résumé du chapitre 8. Code et XAML en harmonie

Remarque

Ce livre a été publié au printemps 2016 et n’a pas été mis à jour depuis. Il y a beaucoup dans le livre qui reste précieux, mais certains documents sont obsolètes, et certains sujets ne sont plus entièrement corrects ou complets.

Ce chapitre explore davantage le code XAML, et en particulier la façon dont le code et XAML interagissent.

Passage d’arguments

Dans le cas général, une classe instanciée en XAML doit avoir un constructeur sans paramètre public ; l’objet résultant est initialisé via les paramètres de propriété. Toutefois, il existe deux autres façons dont les objets peuvent être instanciés et initialisés.

Bien qu’il s’agisse de techniques à usage général, elles sont principalement utilisées en relation avec les modèles de vue MVVM.

Constructeurs avec des arguments

L’exemple ParameteredConstructorDemo montre comment utiliser la x:Arguments balise pour spécifier des arguments de constructeur. Ces arguments doivent être délimités par des balises d’élément indiquant le type de l’argument. Pour les types de données .NET de base, les balises suivantes sont disponibles :

  • x:Object
  • x:Boolean
  • x:Byte
  • x:Int16
  • x:Int32
  • x:Int64
  • x:Single
  • x:Double
  • x:Decimal
  • x:Char
  • x:String
  • x:TimeSpan
  • x:Array
  • x:DateTime

Puis-je appeler des méthodes à partir de XAML ?

L’exemple FactoryMethodDemo montre comment utiliser l’élément x:FactoryMethod pour spécifier une méthode de fabrique appelée pour créer un objet. Une telle méthode de fabrique doit être publique et statique, et elle doit créer un objet du type dans lequel il est défini. (Par exemple, la Color.FromRgb méthode se qualifie parce qu’elle est publique et statique et retourne une valeur de type Color.) Les arguments de la méthode de fabrique sont spécifiés dans x:Arguments les balises.

Attribut x :Name

L’attribut x:Name permet à un objet instancié en XAML d’avoir un nom. Les règles de ces noms sont les mêmes que pour les noms de variables C#. Après le retour de l’appel InitializeComponent dans le constructeur, le fichier code-behind peut faire référence à ces noms pour accéder à l’élément XAML correspondant. Les noms sont réellement convertis par l’analyseur XAML en champs privés dans la classe partielle générée.

L’exemple XamlClock illustre l’utilisation du x:Name fichier code-behind pour conserver deux Label éléments définis dans XAML mis à jour avec la date et l’heure actuelles.

Le même nom ne peut pas être utilisé pour plusieurs éléments de la même page. Il s’agit d’un problème particulier si vous utilisez OnPlatform pour créer des objets nommés parallèles pour chaque plateforme. L’exemple PlatformSpecificLabele illustre une meilleure façon de faire quelque chose comme ça.

Vues XAML personnalisées

Il existe plusieurs façons d’éviter la répétition du balisage en XAML. Une technique courante consiste à créer une classe BASÉE sur XAML qui dérive de ContentView. Cette technique est illustrée dans l’exemple ColorViewList . La ColorView classe dérive de ContentView l’affichage d’une couleur particulière et de son nom, tandis que la ColorViewListPage classe dérive de ContentPage comme d’habitude et crée explicitement 17 instances de ColorView.

L’accès à la ColorView classe en XAML nécessite une autre déclaration d’espace de noms XML, communément nommée local pour les classes dans le même assembly.

Événements et gestionnaires

Les événements peuvent être affectés aux gestionnaires d’événements en XAML, mais le gestionnaire d’événements lui-même doit être implémenté dans le fichier code-behind. XamlKeypad montre comment générer une interface utilisateur du pavé numérique en XAML et comment implémenter les Clicked gestionnaires dans le fichier code-behind.

Appuyer sur les mouvements

Tout View objet peut obtenir une entrée tactile et générer des événements à partir de cette entrée. La View classe définit une GestureRecognizers propriété de collection qui peut contenir une ou plusieurs instances de classes qui dérivent de GestureRecognizer.

Génère TapGestureRecognizer des Tapped événements. Le programme MonkeyTap montre comment attacher TapGestureRecognizer des objets à quatre BoxView éléments pour créer un jeu d’imitation :

Triple capture d’écran de l’appui singe

Mais le programme MonkeyTap a vraiment besoin de son. (Voir le chapitre suivant.)