Riepilogo del capitolo 6. Clic sui pulsanti
Nota
Questo libro è stato pubblicato nella primavera del 2016, e non è stato aggiornato da allora. C'è molto nel libro che rimane prezioso, ma alcuni materiali sono obsoleti, e alcuni argomenti non sono più completamente corretti o completi.
Button
è la visualizzazione che consente all'utente di avviare un comando. Un Button
oggetto viene identificato dal testo (e facoltativamente un'immagine, come illustrato nel capitolo 13, bitmap). Di conseguenza, Button
definisce molte delle stesse proprietà di Label
:
Button
definisce anche tre proprietà che regolano l'aspetto del bordo, ma il supporto di queste proprietà e la loro indipendenza reciproca sono specifici della piattaforma:
BorderColor
di tipoColor
BorderWidth
di tipoDouble
BorderRadius
di tipoDouble
Button
eredita anche tutte le proprietà di VisualElement
e View
, tra cui BackgroundColor
, HorizontalOptions
e VerticalOptions
.
Elaborazione del clic
La Button
classe definisce un Clicked
evento generato quando l'utente tocca .Button
Il Click
gestore è di tipo EventHandler
. Il primo argomento è l'oggetto Button
che genera l'evento. Il secondo argomento è un EventArgs
oggetto che non fornisce informazioni aggiuntive.
L'esempio ButtonLogger illustra una gestione sempliceClicked
.
Clic sul pulsante Condivisione
Più Button
visualizzazioni possono condividere lo stesso Clicked
gestore, ma il gestore deve in genere determinare quale Button
è responsabile di un determinato evento. Un approccio consiste nell'archiviare i vari Button
oggetti come campi e verificare quale genera l'evento nel gestore.
L'esempio TwoButtons illustra questa tecnica. Il programma illustra anche come impostare la IsEnabled
proprietà di un Button
oggetto su false
quando si preme l'oggetto Button
non è più valido. Un oggetto disabilitato Button
non genera un Clicked
evento.
Gestori eventi anonimi
È possibile definire Clicked
i gestori come funzioni lambda anonime, come illustrato nell'esempio ButtonLambdas . Tuttavia, i gestori anonimi non possono essere condivisi senza codice di reflection disordinato.
Distinguere le visualizzazioni con ID
È anche possibile distinguere più Button
oggetti impostando la proprietà o AutomationId
la StyleId
proprietà su un string
oggetto . Questa proprietà è definita da Element
, ma non viene usata all'interno Xamarin.Formsdi . È destinato a essere utilizzato esclusivamente dai programmi dell'applicazione.
L'esempio di SimplestKeypad usa lo stesso gestore eventi per tutti i 10 tasti numerici su un tastierino numerico e distingue tra di essi con la StyleId
proprietà :
Salvataggio di dati temporanei
Molte applicazioni devono salvare i dati quando un programma viene terminato e ricaricare i dati all'avvio del programma. La Application
classe definisce diversi membri che consentono al programma di salvare e ripristinare i dati temporanei:
- La
Properties
proprietà è un dizionario constring
chiavi edobject
elementi. Il contenuto del dizionario viene salvato automaticamente nella risorsa di archiviazione locale dell'applicazione prima della terminazione del programma e ricaricato all'avvio del programma. - La
Application
classe definisce tre metodi virtuali protetti di cui esegue l'override la classe standardApp
del programma:OnStart
,OnSleep
eOnResume
. Questi fanno riferimento agli eventi del ciclo di vita dell'applicazione . - Il
SavePropertiesAsync
metodo salva il contenuto del dizionario.
Non è necessario chiamare SavePropertiesAsync
. Il contenuto del dizionario viene salvato automaticamente prima della terminazione del programma e recuperato prima dell'avvio del programma. È utile durante i test del programma per salvare i dati in caso di arresto anomalo del programma.
È anche utile:
Application.Current
, una proprietà statica che restituisce l'oggetto correnteApplication
che è quindi possibile utilizzare per ottenere ilProperties
dizionario.
Il primo passaggio consiste nell'identificare tutte le variabili nella pagina che si desidera rendere persistenti al termine del programma. Se si conoscono tutte le posizioni in cui queste variabili cambiano, è sufficiente aggiungerle al Properties
dizionario a quel punto. Nel costruttore della pagina è possibile impostare le variabili dal Properties
dizionario se la chiave esiste.
È probabile che un programma più ampio debba gestire gli eventi del ciclo di vita dell'applicazione. L'elemento più importante è il OnSleep
metodo . Una chiamata a questo metodo indica che il programma ha lasciato il primo piano. Ad esempio, l'utente ha premuto il pulsante Home sul dispositivo o ha visualizzato tutte le applicazioni o sta arrestando il telefono. Una chiamata a OnSleep
è l'unica notifica che un programma riceve prima che venga terminato. Il programma dovrebbe sfruttare questa opportunità per assicurarsi che il Properties
dizionario sia aggiornato.
Una chiamata a OnResume
indica che il programma non è stato terminato dopo l'ultima chiamata a OnSleep
, ma ora è in esecuzione di nuovo in primo piano. Il programma potrebbe usare questa opportunità per aggiornare le connessioni Internet( ad esempio).
Viene eseguita una chiamata a OnStart
durante l'avvio del programma. Non è necessario attendere che questa chiamata al metodo acceda Properties
al dizionario perché il contenuto è già stato ripristinato quando viene chiamato il App
costruttore.
L'esempio persistentKeypad è molto simile a SimplestKeypad , ad eccezione del fatto che il programma usa l'override OnSleep
per salvare la voce del tastierino corrente e il costruttore della pagina per ripristinare tali dati.
Nota
Un altro approccio al salvataggio delle impostazioni del programma è fornito dalla Xamarin.Essentialsclasse Preferences .