TOC

This article has been localized into Portuguese by the community.

Comandos:

Introdução aos Comandos do WPF

Em um capítulo anterior deste tutorial, falamos sobre como lidar com eventos, por exemplo, quando o usuário clica em um botão ou item de menu. Em uma interface de usuário moderna, é comum que uma função seja acessível a partir de vários locais, chamada por diferentes ações do usuário.

Por exemplo, se você tem uma interface típica com um menu principal e um conjunto de barras de ferramentas, uma ação como Novo ou Abrir pode estar disponível no menu, na barra de ferramentas, em um menu de contexto (por exemplo, clicando com o botão direito na área principal da aplicação) e de um atalho de teclado como Ctrl+N e Ctrl+O.

Cada uma dessas ações precisa executar o que normalmente é exatamente o mesmo trecho de código, portanto, em um aplicativo WinForms, você teria que definir um evento para cada um deles e, em seguida, chamar uma função comum. Com o exemplo acima, isso levaria a pelo menos três manipuladores de eventos e algum código para manipular o atalho de teclado. Não é uma situação ideal.

Comandos

Com o WPF, a Microsoft está tentando remediar isso com um conceito chamado comandos. Ele permite que você defina ações em um local e, em seguida, consulte-as a partir de todos os controles da interface do usuário, como itens de menu, botões da barra de ferramentas e assim por diante. O WPF também irá escutar atalhos de teclado e passá-los para o comando adequado, se houver, tornando-o a maneira ideal de oferecer atalhos de teclado em um aplicativo.

Comandos também resolvem outro aborrecimento ao lidar com múltiplas entradas para a mesma função. Em um aplicativo WinForms, você seria responsável por escrever código que pudesse desabilitar os elementos da interface do usuário quando a ação não estivesse disponível. Por exemplo, se seu aplicativo puder usar um comando da área de transferência como Cortar, mas somente quando o texto foi selecionado, você terá que habilitar e desabilitar manualmente o item do menu principal, o botão da barra de ferramentas e o item do menu de contexto sempre que a seleção de texto for alterada.

Com comandos do WPF, isso é centralizado. Com um método, você decide se um determinado comando pode ou não ser executado e, em seguida, o WPF ativa ou desativa todos os elementos da interface de assinatura. Isso torna muito mais fácil criar um aplicativo responsivo e dinâmico!

Vinculando comandos

Comandos na verdade não fazem nada por eles mesmos. Na raiz, eles consistem na interface ICommand, que define apenas um evento e dois métodos: Execute() e CanExecute(). O primeiro é para executar a ação real, enquanto o segundo é para determinar se a ação está disponível atualmente. Para executar a ação real do comando, você precisa de um link entre o comando e seu código e é aí que o CommandBinding entra em jogo.

Um CommandBinding é geralmente definido em uma janela ou um UserControl e contém referências para o comando que ele manipula, bem como os manipuladores de eventos reais para lidar com os eventos Execute() e CanExecute() do comando.

Comandos pré-definidos

É claro que você pode implementar seus próprios comandos, que analisaremos em um dos próximos capítulos, mas, para facilitar, a equipe do WPF definiu mais de 100 comandos comumente usados que você pode usar. Eles foram divididos em 5 categorias, chamados ApplicationCommands, NavigationCommands, MediaCommands, EditingCommands e ComponentCommands. Especialmente ApplicationCommands contém comandos para muitas ações usadas com frequência, como Novo, Abrir, Salvar e Recortar, Copiar e Colar.

Resumo

Os comandos ajudam você a responder a uma ação comum de várias fontes diferentes, usando um único manipulador de eventos. Também torna muito mais fácil ativar e desativar elementos da interface do usuário com base na disponibilidade e no estado atuais. Isso foi tudo teoria, mas nos próximos capítulos vamos discutir como os comandos são usados e como você define seus próprios comandos personalizados.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!