Resumo do Capítulo 6. Cliques no botão
Observação
Este livro foi publicado na primavera de 2016, e não foi atualizado desde então. Há muito no livro que permanece valioso, mas parte do material está desatualizado, e alguns tópicos não estão mais totalmente corretos ou completos.
O Button
é o modo de exibição que permite ao usuário iniciar um comando. A Button
é identificado por texto (e, opcionalmente, uma imagem, conforme demonstrado no Capítulo 13, Bitmaps). Consequentemente, Button
define muitas das mesmas propriedades como Label
:
Button
também define três propriedades que governam a aparência de sua borda, mas o suporte dessas propriedades e sua independência mútua é específico da plataforma:
BorderColor
do tipoColor
BorderWidth
do tipoDouble
BorderRadius
do tipoDouble
Button
também herda todas as propriedades de VisualElement
e View
, incluindo BackgroundColor
, HorizontalOptions
e VerticalOptions
.
Processando o clique
A Button
classe define um Clicked
evento que é acionado quando o usuário toca no Button
. O Click
manipulador é do tipo EventHandler
. O primeiro argumento é o Button
objeto que gera o evento, o segundo argumento é um EventArgs
objeto que não fornece nenhuma informação adicional.
O exemplo ButtonLogger demonstra o manuseio simples Clicked
.
Cliques no botão de compartilhamento
Vários Button
modos de exibição podem compartilhar o mesmo Clicked
manipulador, mas o manipulador geralmente precisa determinar qual Button
é responsável por um evento específico. Uma abordagem é armazenar os vários Button
objetos como campos e verificar qual deles está disparando o evento no manipulador.
O exemplo TwoButtons demonstra essa técnica. O programa também demonstra como definir a IsEnabled
propriedade de um Button
para false
ao pressionar o Button
não é mais válido. Um desabilitado Button
não gera um Clicked
evento.
Manipuladores de eventos anônimos
É possível definir Clicked
manipuladores como funções lambda anônimas, como demonstra o exemplo ButtonLambdas . No entanto, manipuladores anônimos não podem ser compartilhados sem algum código de reflexão confuso.
Distinguindo modos de exibição com IDs
Vários Button
objetos também podem ser distinguidos definindo a propriedade ou AutomationId
propriedade StyleId
como um string
arquivo . Essa propriedade é definida por, mas não é usada no Element
Xamarin.Forms. Destina-se a ser usado exclusivamente por programas aplicativos.
O exemplo SimpletKeypad usa o mesmo manipulador de eventos para todas as 10 teclas numéricas em um teclado numérico e distingue entre elas com a StyleId
propriedade:
Salvando dados transitórios
Muitos aplicativos precisam salvar dados quando um programa é encerrado e recarregar esses dados quando o programa é iniciado novamente. A Application
classe define vários membros que ajudam seu programa a salvar e restaurar dados transitórios:
- A
Properties
propriedade é um dicionário comstring
chaves eobject
itens. O conteúdo do dicionário é salvo automaticamente no armazenamento local do aplicativo antes do encerramento do programa e recarregado quando o programa é iniciado. - A
Application
classe define três métodos virtuais protegidos que a classe padrãoApp
do programa substitui:OnStart
,OnSleep
eOnResume
. Eles se referem a eventos do ciclo de vida do aplicativo. - O
SavePropertiesAsync
método salva o conteúdo do dicionário.
Não é necessário ligar SavePropertiesAsync
para . O conteúdo do dicionário é salvo automaticamente antes do término do programa e recuperado antes da inicialização do programa. É útil durante o teste do programa salvar dados se o programa falhar.
Também é útil:
Application.Current
, uma propriedade estática que retorna o objeto atualApplication
que você pode usar para obter oProperties
dicionário.
A primeira etapa é identificar todas as variáveis na página que você deseja manter quando o programa for encerrado. Se você souber todos os lugares onde essas variáveis mudam, você pode simplesmente adicioná-las ao Properties
dicionário nesse ponto. No construtor da página, você pode definir as variáveis do Properties
dicionário se a chave existir.
Um programa maior provavelmente precisará lidar com eventos do ciclo de vida do aplicativo. O mais importante é o OnSleep
método. Uma chamada para esse método indica que o programa deixou o primeiro plano. Talvez o usuário tenha pressionado o botão Home no dispositivo, ou exibido todos os aplicativos, ou esteja desligando o telefone. Uma chamada para OnSleep
é a única notificação que um programa recebe antes de ser encerrado. O programa deve aproveitar esta oportunidade para garantir que o Properties
dicionário está atualizado.
Uma chamada para OnResume
indica que o programa não foi encerrado após a última chamada para OnSleep
, mas agora está sendo executado em primeiro plano novamente. O programa pode usar essa oportunidade para atualizar conexões com a Internet (por exemplo).
Uma chamada para ocorre durante a inicialização do OnStart
programa. Não é necessário esperar até que esse método chame para acessar o Properties
dicionário porque o conteúdo já foi restaurado quando o App
construtor é chamado.
O exemplo PersistentKeypad é muito semelhante ao SimplestKeypad , exceto que o programa usa a OnSleep
substituição para salvar a entrada do teclado atual e o construtor de página para restaurar esses dados.
Observação
Outra abordagem para salvar as configurações do Xamarin.Essentialsprograma é fornecida pela classe Preferências .