Résumé du chapitre 6. Clics de bouton
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.
Il Button
s’agit de la vue qui permet à l’utilisateur de lancer une commande. Un Button
est identifié par du texte (et éventuellement une image comme illustré dans le chapitre 13, Bitmaps). Par conséquent, Button
définit la plupart des mêmes propriétés que Label
:
Button
définit également trois propriétés qui régissent l’apparence de sa bordure, mais la prise en charge de ces propriétés et de leur indépendance mutuelle est spécifique à la plateforme :
BorderColor
de typeColor
BorderWidth
de typeDouble
BorderRadius
de typeDouble
Button
hérite également de toutes les propriétés et VisualElement
View
, y compris BackgroundColor
, HorizontalOptions
et VerticalOptions
.
Traitement du clic
La Button
classe définit un Clicked
événement déclenché lorsque l’utilisateur appuie sur le Button
fichier . Le Click
gestionnaire est de type EventHandler
. Le premier argument est l’objet Button
qui génère l’événement ; le deuxième argument est un EventArgs
objet qui ne fournit aucune information supplémentaire.
L’exemple ButtonLogger illustre une gestion simpleClicked
.
Clics sur le bouton Partager
Plusieurs Button
vues peuvent partager le même Clicked
gestionnaire, mais le gestionnaire doit généralement déterminer qui Button
est responsable d’un événement particulier. Une approche consiste à stocker les différents Button
objets sous forme de champs et à vérifier celui qui déclenche l’événement dans le gestionnaire.
L’exemple TwoButtons illustre cette technique. Le programme montre également comment définir la IsEnabled
propriété d’un Button
false
lorsque vous appuyez sur le Button
bouton n’est plus valide. Un événement désactivé Button
ne génère pas d’événement Clicked
.
Gestionnaires d’événements anonymes
Il est possible de définir Clicked
des gestionnaires en tant que fonctions lambda anonymes, comme l’illustre l’exemple ButtonLambdas . Toutefois, les gestionnaires anonymes ne peuvent pas être partagés sans code de réflexion désordonné.
Distinction des vues avec des ID
Plusieurs Button
objets peuvent également être distingués en définissant la propriété ou AutomationId
la StyleId
propriété sur un string
. Cette propriété est définie par Element
mais elle n’est pas utilisée dans Xamarin.Forms. Il est destiné à être utilisé uniquement par les programmes d’application.
L’exemple SimpleKeypad utilise le même gestionnaire d’événements pour toutes les 10 touches numériques sur un pavé numérique et fait la distinction entre eux avec la StyleId
propriété :
Enregistrement de données temporaires
De nombreuses applications doivent enregistrer des données lorsqu’un programme est arrêté et recharger ces données au démarrage du programme. La Application
classe définit plusieurs membres qui aident votre programme à enregistrer et restaurer des données temporaires :
- La
Properties
propriété est un dictionnaire avecstring
des clés etobject
des éléments. Le contenu du dictionnaire est automatiquement enregistré dans le stockage local de l’application avant l’arrêt du programme et rechargé lors du démarrage du programme. - La
Application
classe définit trois méthodes virtuelles protégées que la classe standardApp
du programme remplace :OnStart
,OnSleep
etOnResume
. Ces événements font référence aux événements de cycle de vie des applications. - La
SavePropertiesAsync
méthode enregistre le contenu du dictionnaire.
Il n’est pas nécessaire d’appeler SavePropertiesAsync
. Le contenu du dictionnaire est automatiquement enregistré avant l’arrêt du programme et récupéré avant le démarrage du programme. Il est utile pendant les tests du programme d’enregistrer les données si le programme se bloque.
Il est également utile de :
Application.Current
, propriété statique qui retourne l’objet actuelApplication
que vous pouvez ensuite utiliser pour obtenir leProperties
dictionnaire.
La première étape consiste à identifier toutes les variables de la page à conserver lorsque le programme se termine. Si vous connaissez tous les endroits où ces variables changent, vous pouvez simplement les ajouter au Properties
dictionnaire à ce stade. Dans le constructeur de la page, vous pouvez définir les variables à partir du Properties
dictionnaire si la clé existe.
Un programme plus important devra probablement traiter les événements de cycle de vie des applications. La méthode la plus importante est la OnSleep
méthode. Un appel à cette méthode indique que le programme a quitté le premier plan. L’utilisateur a peut-être appuyé sur le bouton Accueil sur l’appareil, ou affiché toutes les applications, ou a arrêté le téléphone. Un appel est OnSleep
la seule notification à laquelle un programme reçoit avant sa fin. Le programme doit profiter de cette occasion pour s’assurer que le Properties
dictionnaire est à jour.
Un appel pour OnResume
indiquer que le programme ne s’est pas arrêté après le dernier appel, OnSleep
mais qu’il est maintenant en cours d’exécution au premier plan. Le programme peut utiliser cette opportunité pour actualiser les connexions Internet (par exemple).
Un appel se OnStart
produit pendant le démarrage du programme. Il n’est pas nécessaire d’attendre que cet appel de méthode accède au Properties
dictionnaire, car le contenu a déjà été restauré lorsque le App
constructeur est appelé.
L’exemple PersistentKeypad est très similaire à SimpleKeypad, sauf que le programme utilise la OnSleep
substitution pour enregistrer l’entrée du pavé numérique actuel et le constructeur de page pour restaurer ces données.
Remarque
Une autre approche de l’enregistrement des paramètres du programme est fournie par la Xamarin.Essentialsclasse Préférences .