2010-03-11 10 views
7

Tengo información sobre herramientas en un elemento que quiero mantener abierto incluso cuando el usuario hace clic o mantiene presionado el botón del mouse mientras está sobre mi elemento.WPF ToolTip desaparece en el mouse hacia abajo

¿Hay alguna forma de hacerlo?

Respuesta

8

Existe una propiedad de información sobre herramientas de StaysOpen, pero de acuerdo con this book es mejor usar un control emergente (simplemente haz que parezca una información sobre herramientas).

Aquí es una cita del libro:

no tiene ningún efecto en la práctica. El propósito de de esta propiedad es para permitirle crear una información sobre herramientas que permanece abierto hasta que el usuario haga clic en en otro lugar. Sin embargo, la propiedad ToolTipService.ShowDuration prevalece sobre la propiedad StaysOpen. Como resultado de , la información sobre herramientas siempre desaparece después de una cantidad de tiempo configurable (generalmente unos 5 segundos) o cuando el usuario mueve el mouse. Si quiere para crear una ventana tipo tooltip que permanece abierto indefinidamente, el método más fácil es usar el control Popup.

+0

Tenía miedo de tener que meterme con el control emergente. Gracias por la respuesta – viggity

+0

Entonces, ¿la respuesta es sí o no? Este es un comportamiento muy molesto de la información sobre herramientas. – xr280xr

1

La manera más simple es usar Popup. Mire a la muestra de código.

<!--Your ToolTip--> 
<Popup x:Name="InfoPopup" PlacementTarget="{Binding ElementName=yourElement}" AllowsTransparency="True" StaysOpen="False" Placement="Mouse" PopupAnimation="Fade"> 
    <Border BorderBrush="White" BorderThickness="1" Background="#FFFFFFFF" > 
     <Label Content="Your text here" /> 
    </Border> 
</Popup> 

<!--Your element. Border, Button etc..--> 
<Border x:Name="yourElement" Background="#FFFFFF" MinWidth="20" Height="20"> 
    <Border.Triggers> 
     <EventTrigger RoutedEvent="Mouse.MouseDown"> 
      <BeginStoryboard> 
       <Storyboard> 
        <BooleanAnimationUsingKeyFrames Duration="0:0:0:0" Storyboard.TargetProperty="IsOpen" Storyboard.TargetName="InfoPopup"> 
         <DiscreteBooleanKeyFrame Value="True"></DiscreteBooleanKeyFrame> 
        </BooleanAnimationUsingKeyFrames> 
       </Storyboard> 
      </BeginStoryboard> 

     </EventTrigger> 
     <EventTrigger RoutedEvent="Mouse.MouseUp"> 
      <BeginStoryboard> 
       <Storyboard> 
        <BooleanAnimationUsingKeyFrames Duration="0:0:0:0" Storyboard.TargetProperty="IsOpen" Storyboard.TargetName="InfoPopup"> 
         <DiscreteBooleanKeyFrame Value="False"></DiscreteBooleanKeyFrame> 
        </BooleanAnimationUsingKeyFrames> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </Border.Triggers> 
</Border> 
Cuestiones relacionadas