This article has been localized into Portuguese by the community.
O controle Button
Nenhum framework de interface gráfica do usuário estaria completo sem um controle Button, então com certeza o WPF tem um incluído que é muito bom, e assim como o resto dos frameworks de controles, é bastante flexível e vai permitir que você faça praticamente qualquer coisa. Mas vamos começar com alguns exemplos básicos.
Um Button simples
Da mesma forma que vários outros controles do WPF, um Button pode ser exibido simplesmente adicionando uma tag Button para a sua janela. Se você inserir um texto entre as tags (ou outro controle), isto se comportará como o conteúdo do Button:
<Button>Hello, world!</Button>
Bem simples, certo? Obviamente, o Button não possui uma ação por enquanto, mas se você passar o mouse sobre ele, perceberá que o controle possui um efeito hover bacana e pronto para uso. Mas vamos fazer com que o Button tenha alguma ação, inscrevendo-o para seu evento Click (mais informações sobre esse processo podem ser encontradas no artigo Inscrição para Eventos em XAML):
<Button Click="HelloWorldButton_Click">Hello, World!</Button>
No Code-behind, você precisará de um método correspondente para lidar com o click:
private void HelloWorldButton_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Hello, world!");
}
Você possui agora um Button básico, e quando clica nele, uma mensagem será exibida!
Conteúdo formatado
Internamente, um texto simples dentro do conteúdo de um Button é convertido em um controle TextBlock, o que significa que você pode controlar os mesmos atributos da formatação de texto. Você encontrará inúmeras propriedades no controle Button para fazer isso, incluindo (mas não limitado a isto) Foreground, Background, FontWeight e assim por diante. Em outras palavras, é muito fácil mudar a formatação de um texto dentro do controle Button:
<Button Background="Beige" Foreground="Blue" FontWeight="Bold">Formatted Button</Button>
Ao configurar essas propriedades diretamente no Button, você com certeza está limitado a aplicar a mesma formatação para todo o conteúdo, mas se isto não for bom o suficiente, apenas continue lendo para descobrir mais formatações avançadas de conteúdo.
Buttons com conteúdo avançado
Nós já falamos sobre isso várias vezes, mas uma das muitas coisas legais sobre o WPF é a habilidade de substituir textos simples dentro de um controle por outros controles WPF. Isso também significa que você não precisa limitar os seus botões a apenas texto simples formatados do mesmo jeito - você pode simplesmente adicionar inúmeros controles de texto com diferentes formatações. O Button WPF suporta apenas um controle filho direto, mas você pode fazer um Panel, que abrigará o máximo de controles que você precisar. Você pode utilizar isso para criar buttons com vários tipos de formatação:
<Button>
<StackPanel Orientation="Horizontal">
<TextBlock>Formatted </TextBlock>
<TextBlock Foreground="Blue" FontWeight="Bold" Margin="2,0">Button</TextBlock>
<TextBlock Foreground="Gray" FontStyle="Italic">[Various]</TextBlock>
</StackPanel>
</Button>
Porém, sem dúvida alguma, você não está restringido a utilizar apenas texto - pode inserir o que quiser dentro de seus buttons, o que nos leva a um assunto que eu sei que muitas pessoas irão perguntar. Buttons com imagens!
Buttons com Imagens (ImageButton)
Em muitos frameworks de interface do usuário, você encontrará um Button padrão e um ou muitas outras variações, que oferecerão funcionalidades extras. Uma das variações mais usadas geralmente é o ImageButton, que, como o nome implica, é um Button que usualmente permitirá você incluir uma imagem antes do texto. Mas no WPF, não há necessidade de ter um controle separado para obter isso - do mesmo jeito que você viu, nós podemos inserir inúmeros controles dentro de um Button, assim você pode facilmente adicionar um controle Image nele, desta forma:
<Button Padding="5">
<StackPanel Orientation="Horizontal">
<Image Source="/WpfTutorialSamples;component/Images/help.png" />
<TextBlock Margin="5,0">Help</TextBlock>
</StackPanel>
</Button>
É realmente desse jeito fácil que um ImageButton é criado no WPF, e você está livre, com certeza, para mover as coisas por aí. Por exemplo, caso queira que uma imagem fique depois do texto, ao invés de antes, entre outros.
Button Padding
Você deve ter notado que buttons no framework WPF não vem com qualquer padding por padrão. Isso significa que o texto fica muito próximo das bordas, que pode parecer um pouco estranho, porque a maioria dos buttons encontrados por aí (na web, em outras aplicações, etc) possuem pelo menos algum padding nos lados. Não se preocupe, afinal o controle Button detém uma propriedade Padding:
<Button Padding="5,2">Hello, World!</Button>
Isso aplicará um padding de 5 pixels nos lados, e 2 pixels no topo e em baixo. Mas ter que aplicar um padding para todos os seus buttons pode ser algo que fique cansativo em certo momento, então aqui vai uma dica: você pode aplicar o padding de forma global, tanto através da aplicação como um todo, quanto apenas para uma janela específica, utilizando um Style (mais sobre styles depois). Aqui temos um exemplo de onde aplicamos isso à janela, usando a propriedade Window.Resources:
<Window.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Padding" Value="5,2"/>
</Style>
</Window.Resources>
Esse padding agora será aplicado a todos os seus buttons, mas você pode, sem dúvida, sobrescrever o estilo ao definir a propriedade Padding em um Button. Veja como todos os buttons deste exemplo ficam com um padding em comum:
Resumo
Como você pode ver a partir deste artigo, usar buttons no framework WPF é muito fácil e você pode customizar este importante controle de formas quase ilimitadas.