2017-09-28 11 views
1

Je travaille sur une application WPF C# et j'ai besoin de créer une popup, qui contient un bouton, et pour ce bouton j'ai besoin de définir une info-bulle. Le problème est que, lorsque je passe la souris sur le bouton, l'infobulle apparaît, mais quand je déplace la souris, l'infobulle ne disparaît pas immédiatement, il faut environ 5 secondes pour disparaître.Problème avec WPF Popup et l'info-bulle du bouton

Ci-dessous l'extrait de code:

 <ToggleButton Name="PART_Button" 
         DockPanel.Dock="Right" 
         Width="20" 
         Height="20" 
         HorizontalAlignment="Center" 
         VerticalAlignment="Center" 
         Margin="0,0,0,0" 
         IsChecked="{Binding ElementName=PART_Popup, 
         Path=IsOpen, Mode=OneWay}"> 
     </ToggleButton> 

     <Popup IsOpen="{Binding ElementName=PART_Button, Path=IsChecked}" 
       PlacementTarget="{Binding ElementName=PART_Button}" 
       StaysOpen="False"> 

      <Button x:Name="PART_MinButton" 
        Content="BOT"> 

       <Button.ToolTip> 
        <ToolTip Placement="Bottom" 
          Content="Hello !!" />      
       </Button.ToolTip> 

      </Button> 

     </Popup> 

J'ai la moindre idée, donc quand je ne supprimer StaysOpen = « false », l'info-bulle fonctionne bien pour le bouton à l'intérieur et il disparaît immédiatement quand je déplace la souris loin, mais quand je mets StaysOpen = "False" le problème commence.

Est-ce que quelqu'un sait comment je peux résoudre ce problème s'il vous plaît? Je suis coincé et à court d'idées.

Merci.

+0

Avez-vous vérifié la propriété ShowDuration attachée? https://msdn.microsoft.com/en-us/library/system.windows.controls.tooltipservice.showduration(v=vs.110).aspx – Lennart

+0

Oui, mais cela définit à quelle heure l'info-bulle doit rester visible, mon problème C'est quand je déplace la souris loin du bouton, il ne disparaît pas immédiatement, il faut un certain temps avant cela. – mmahfoudh

Répondre

0

Est-ce que quelqu'un sait comment je peux résoudre ce problème s'il vous plaît?

Vous pouvez gérer l'événement MouseLeave pour le Button.

<Popup IsOpen="{Binding ElementName=PART_Button, Path=IsChecked}" 
       PlacementTarget="{Binding ElementName=PART_Button}" 
       StaysOpen="False"> 
    <Button x:Name="PART_MinButton" 
        Content="BOT" MouseLeave="PART_MinButton_MouseLeave"> 
     <Button.ToolTip> 
      <ToolTip Placement="Bottom" IsOpen="False" 
        Content="Hello !!" /> 
     </Button.ToolTip> 
    </Button> 
</Popup> 

private void PART_MinButton_MouseLeave(object sender, MouseEventArgs e) 
{ 
    Button btn = sender as Button; 
    (btn.ToolTip as ToolTip).IsOpen = false; 
}