Partilhar via


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:

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:

Captura de tela tripla do teclado mais simples

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 com string chaves e object 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ão App do programa substitui: OnStart, OnSleep, e OnResume. 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 atual Application que você pode usar para obter o Properties 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 .