2010-04-17 4 views
4

Je souhaite afficher une info-bulle lorsque je déplace la souris. Voici mon code:Comment forcer l'affichage d'une info-bulle dans WPF

private void Grid_MouseMove(object sender, MouseEventArgs e) 
     { 
      Grid grid = (Grid) sender; 
      if (e.GetPosition(grid).X < 100) 
       grid.ToolTip = e.GetPosition(grid).X.ToString(); 
      else 
       grid.ToolTip = null; 
     } 

Cependant, l'info-bulle disparaît après avoir cliqué sur la grille.

Existe-t-il un moyen de forcer l'affichage de l'info-bulle?

Répondre

5
var oldTT = SomeElement.ToolTip as ToolTip; 
if (oldTT != null) oldTT.IsOpen = false; 
SomeElement.ToolTip = new ToolTip 
{ 
    Content = "Lalalalala", 
    IsOpen = true, 
}; 

ou

var tt = SomeElement.ToolTip as ToolTip; 
if (tt != null) tt.IsOpen = true; 
+0

'ToolTip' dans WPF est seulement 'object'. Ce code est probablement pour Winforms ToolTip. – Gerard

+1

@Gerard, bien sûr .ToolTip-propriété a le type d'objet comme Label.Content. Mais lorsque vous définissez une valeur avec un type d'info-bulle, vous pouvez facilement accéder à ses propriétés comme .IsOpen ou Content. Les propriétés des info-bulles sont liées par défaut. – tmt

3

fonctionne TooltipService.ShowDuration, mais vous devez définir sur l'objet ayant l'info-bulle, comme ceci:

<Label ToolTipService.ShowDuration="120000" Name="lblTooltip" Content="Shows tooltip"> 
<Label.ToolTip> 
    <ToolTip> 
     <TextBlock>Hi world!</TextBlock> 
    </ToolTip> 
</Label.ToolTip>