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 :
Mais le programme MonkeyTap a vraiment besoin de son. (Voir le chapitre suivant.)