2010-03-11 7 views

risposta

8

C'è una proprietà di suggerimento StaysOpen, ma in base a this book è preferibile utilizzare un controllo Popup (è sufficiente farlo sembrare un suggerimento).

Ecco una citazione dal libro:

Non ha alcun effetto nella pratica. Lo scopo di questa proprietà è per consentire all'utente di creare un suggerimento che rimanga aperto fino a quando l'utente non fa clic su da qualche altra parte. Tuttavia, la proprietà ToolTipService.ShowDuration sovrascrive la proprietà StaysOpen. Come risultato , i suggerimenti scompaiono sempre dopo un tempo configurabile (in genere circa 5 secondi) o quando l'utente sposta il mouse. Se si desidera per creare una finestra simile a una descrizione che rimanga aperta indefinitamente, l'approccio più semplice consiste nell'utilizzare il controllo Popup.

+0

Avevo paura di dover pasticciare con il controllo popup. Grazie per la risposta – viggity

+0

Quindi la risposta è sì o no? Questo è un comportamento molto fastidioso del Tooltip. – xr280xr

1

Il modo più semplice è utilizzare Popup. Guarda il codice di esempio.

<!--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>