This article has been localized into Italian by the community.
Tooltips dei controlli
Finestre di suggerimento, Infotip o consigli - diversi nomi, ma il concetto rimane lo stesso: la capacità di ottenere informazioni extra riguardanti uno specifico controllo o link posizionando il mouse sopra. WPF ovviamente supporta anche questo concetto, usando la proprietà ToolTip che si trova nella classe FrameworkElement dalla quale la quasi totalità delle applicazioni WPF eredita.
Specificare un tooltip per un controllo è facilissimo, come vedrai in questo primo e semplice esempio:
<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>
Come puoi vedere negli screenshots, rappresenta un riquadro mobile con la stringa specificata che appare quando ci si ferma sopra con il mouse. Questo è ciò che la maggior dei framework UI offre - mostra una stringa di testo e niente altro.
Comunque, in WPF, la proprietà ToolTip non è di tipo stringa ma un oggetto, stando a significare che possiamo inserire al suo interno quello che vogliamo. Questo ci apre a diverse interessanti possibilità, potendo fornire all'utente tooltip più ricchi e utili. Ad esempio, considera questo esempio e paragonalo al primo:
<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>
Nota come questo esempio usa un semplice tooltip a stringa per il primo pulsante e poi uno molto più avanzato per il secondo. Nel caso avanzato, usiamo un pannello come controllo principale e poi siamo liberi di aggiungere i controlli che desideriamo. Il risultato è interessante, con un header, una descrizione testuale e un consiglio di premere F1 per ricevere aiuto, includendo un icona di aiuto.
Opzioni avanzate
La classe ToolTipService ha numerose proprietà interessanti che interagiranno con il comportamento del tuo tooltip. Puoi impostarle direttamente dal controllo che ha il tooltip, ad esempio come qui, abbiamo esteso il tempo per il quale il tooltip viene mostrato usando la proprietà ShowDuration (l'abbiamo impostata a 5.000 millisecondi ovvero 5 secondi):
<Button ToolTip="Create a new file" ToolTipService.ShowDuration="5000" Content="Open" />
Puoi anche controllare l'ombra del popup, usando la proprietà HasDropShadow, oppure se i tooltips debbano essere mostrati per i controlli disabilitati, usando la proprietà ShowOnDisabled. Ci sono diverse altre proprietà interessanti quindi per la lista completa consultate la documentazione a questo link: http://msdn.microsoft.com/en-us/library/system.windows.controls.tooltipservice.aspx
Riepilogo
I Tooltips sono utilissimi per l'utente, e in WPF, sono sia molto semplici da usare sia estremamente flessibili. Combinato al fatto che puoi completamente controllare il design e il contenuto del tooltip, con le proprietà dalla classe ToolTipService, per creare applicazioni sempre più user-friendly.