This article has been localized into Portuguese by the community.
A special thanks goes out to user #45 for the Portuguese translation of this article: Paulo Duarte
Dicas de controle
Tooltips, infotips ou dicas - vários nomes, mas o conceito permanece o mesmo: A capacidade de fornecer informação extra sobre um controle específico ou link ao passar o mouse sobre ele. WPF obviamente suporta este conceito também, ao usar a propriedade ToolTip encontrada na classe FrameworkElement, que é herdada por quase todos controles.
Especificar uma dica de ferramenta para um controle é muito fácil, como você verá nesse primeiro e muito básico exemplo:
<Window x:Class="WpfTutorialSamples.Control_concepts.ToolTipsSimpleSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ToolTipsSimpleSample" Height="150" Width="400">
<Grid VerticalAlignment="Center" HorizontalAlignment="Center">
<Button ToolTip="Click here and something will happen!">Click here!</Button>
</Grid>
</Window>
Como você pode ver no print, isto resulta em uma caixa flutuante com um texto especificado, uma vez que o mouse passa sobre o botão. Isto é o que a maioria dos frameworks UI oferecem - a exibição de um texto e nada mais.
No entanto, no WPF, a propriedade ToolTip não é do tipo string, mas sim do tipo object, o que significa que nós podemos colocar qualquer coisa que quisermos nela. Isso abre algumas possibilidade bem legais, onde podemos fornecer para o usuário dicas de ferramenta muito mais ricas e úteis. Por exemplo, considere este exemplo e compare-o com o primeiro:
<Window x:Class="WpfTutorialSamples.Control_concepts.ToolTipsAdvancedSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ToolTipsAdvancedSample" Height="200" Width="400" UseLayoutRounding="True">
<DockPanel>
<ToolBar DockPanel.Dock="Top">
<Button ToolTip="Create a new file">
<Button.Content>
<Image Source="/WpfTutorialSamples;component/Images/page_white.png" Width="16" Height="16" />
</Button.Content>
</Button>
<Button>
<Button.Content>
<Image Source="/WpfTutorialSamples;component/Images/folder.png" Width="16" Height="16" />
</Button.Content>
<Button.ToolTip>
<StackPanel>
<TextBlock FontWeight="Bold" FontSize="14" Margin="0,0,0,5">Open file</TextBlock>
<TextBlock>
Search your computer or local network
<LineBreak />
for a file and open it for editing.
</TextBlock>
<Border BorderBrush="Silver" BorderThickness="0,1,0,0" Margin="0,8" />
<WrapPanel>
<Image Source="/WpfTutorialSamples;component/Images/help.png" Margin="0,0,5,0" />
<TextBlock FontStyle="Italic">Press F1 for more help</TextBlock>
</WrapPanel>
</StackPanel>
</Button.ToolTip>
</Button>
</ToolBar>
<TextBox>
Editor area...
</TextBox>
</DockPanel>
</Window>
Note como esse exemplo usa um simples texto de Dica de Ferramentas para o primeiro botão e logo depois um muito mais avançado para o segundo botão. No caso avançado, nós usamos um painel como controle raiz e então temos liberdade para adicionar controles para o qual nos agrada. O resultado é bem legal, com um cabeçalho, um texto de descrição e uma dica que você pode pressionar F1 para mais ajuda, incluindo um ícone de ajuda.
Opções avançadas
A classe ToolTipService tem um monte de propriedades interessantes que afetarão o comportamento de suas dicas. Você define diretamente no controle que tem o tooltip, como no exemplo a seguir, onde nós estendemos o tempo em que o tooltip será exibido usando a propriedade ShowDuration (nós definimos como 5.000 milisegundos ou 5 segundos):
<Button ToolTip="Create a new file" ToolTipService.ShowDuration="5000" Content="Open" />
Você também pode controlar se o popup deve ou não ter uma sombra, usando a propriedade HasDropShadow, assim como se as dicas devem ou não ser exibidas em controles desativados, usando a propriedade ShowOnDisabled. Existem diversas outras propriedades interessantes, para uma lista completa, consulte a documentação: http://msdn.microsoft.com/en-us/library/system.windows.controls.tooltipservice.aspx
Resumo
Dicas de ferramenta podem ser de grande ajuda para o usuário, e no WPF, elas são tanto fáceis de usar quanto extremamente flexíveis. Adicione o fato de que você pode controlar completamente o design e o conteúdo da Dica de Ferramenta, com propriedades da classe ToolTipService, para criar ajuda inline mais amigável aos usuários em suas aplicações.