Compartilhar 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 é 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:

Button também herda todas as propriedades de VisualElement e View, incluindo BackgroundColor, HorizontalOptionse 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 stringarquivo . Essa propriedade é definida por, mas não é usada no ElementXamarin.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, OnSleepe 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 ligar SavePropertiesAsyncpara . 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 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 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 .