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:

Button eredita anche tutte le proprietà di VisualElement e View, tra cui BackgroundColor, HorizontalOptionse 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 stringoggetto . 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à :

Screenshot triplo del tastierino più semplice

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 con string chiavi ed object 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 standard App del programma: OnStart, OnSleepe OnResume. 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 corrente Application che è quindi possibile utilizzare per ottenere il Properties 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 .