2010-12-08 4 views
2

J'ai lié la propriété Tooltip d'un contrôle dans wpf à une chaîne appelée TooltipText. La valeur par défaut de TooltipText est la chaîne vide "". Il sera peuplé plus tard dans certaines conditions. Le problème est lorsque le TooltipText est vide, il semble étrange lorsque l'utilisateur passe la souris sur mon contrôle car il affiche une info-bulle de boîte vide.Info-bulle reliée au texte - Comment éviter les petits rectangles lorsque le texte est vide

Existe-t-il un moyen de ne pas afficher l'info-bulle lorsque TooltipText est vide mais de l'afficher lorsque sa longueur est supérieure à 1? J'espère que je me suis fait clair.

Je le fais en XAML que (le code est incomplet et que partiel):

<c:MyControl ToolTip="{Binding ElementName=controlName, Path=TooltipText}"> 
+1

donc, essayez de 'infobulle = null' par défaut – serhio

Répondre

8

Définissez la propriété à null au lieu de "".

+0

Wow qui était rapide .... et oui ça marche! Merci beaucoup les gars! – guest123456789

0

Excellente réponse à ce sujet already. Fonctionne comme un charme!

Copié le code correspondant ici pour la postérité.

<TextBlock Text="{Binding Text}" 
    IsMouseDirectlyOverChanged="TextBlock_IsMouseDirectlyOverChanged" > 
    <TextBlock.ToolTip> 
    <ToolTip Visibility="Collapsed"> 
     <TextBlock Text="{Binding Text}"></TextBlock> 
    </ToolTip> 
    </TextBlock.ToolTip> 
</TextBlock> 

code derrière:

private void TextBlock_IsMouseDirectlyOverChanged(object sender, e) 
{ 
    bool isMouseOver = (bool)e.NewValue; 
    if (!isMouseOver) 
     return; 
    TextBlock textBlock = (TextBlock)sender; 
    bool needed = textBlock.ActualWidth > 
     (this.listView.View as GridView).Columns[2].ActualWidth; 
    ((ToolTip)textBlock.ToolTip).Visibility = 
     needed ? Visibility.Visible : Visibility.Collapsed; 
} 
+0

Merci pour la réponse ... mais cela ressemble à trop de code pour atteindre ce que je veux .... Aussi la définition de la valeur par défaut fonctionne null! – guest123456789

Questions connexes