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
é a visualizaçã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 informações adicionais.
O exemplo ButtonLogger demonstra um tratamento simples Clicked
.
Compartilhamento de cliques no botão
Várias Button
exibições podem compartilhar o mesmo Clicked
manipulador, mas o manipulador geralmente precisa determinar qual Button
é o 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 a Button
como false
quando 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 visualizações com IDs
Vários Button
objetos também podem ser distinguidos definindo a propriedade ou AutomationId
propriedade StyleId
como um string
. Essa propriedade é definida por Element
, mas não é usada em 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 chamar SavePropertiesAsync
. O conteúdo do dicionário é salvo automaticamente antes do encerramento do programa e recuperado antes da inicialização do programa. É útil durante o teste do programa para 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 persistir quando o programa for encerrado. Se você conhece todos os lugares onde essas variáveis mudam, basta 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, exibido todos os aplicativos ou desligado 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 esteja 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 as 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 SimpletKeypad , exceto que o programa usa a OnSleep
substituição para salvar a entrada atual do teclado 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 Preferences .