2010-03-11 10 views

Odpowiedz

8

Istnieje właściwość narzędziowa StaysOpen, ale zgodnie z this book lepiej jest użyć kontrolki Popup (po prostu spraw, aby wyglądała jak wskazówka narzędzia).

Oto cytat z książki:

ma żadnych skutków w praktyce. Celem tego obiektu jest : , aby można było utworzyć etykietkę narzędzi, która pozostanie otwarta dla , dopóki użytkownik nie kliknie w innym miejscu numeru . Jednak właściwość ToolTipService.ShowDuration zastępuje właściwość StaysOpen. Jako wynik , etykiety narzędzi zawsze znikają po skonfigurowanym czasie (zwykle około 5 sekund) lub gdy użytkownik odsunie mysz. Jeśli chcesz, aby utworzyć okno podobne do podpowiedzi, które pozostaje otwarte przez czas nieokreślony, najłatwiejszym podejściem jest użycie kontrolki Popup.

+0

Obawiałem się, że będę musiał zadzierać z kontrolką wyskakującą. Dzięki za odpowiedź – viggity

+0

Tak więc odpowiedź brzmi "tak" lub "nie"? Jest to bardzo irytujące zachowanie etykiety narzędzi. – xr280xr

1

Najprostszym sposobem jest użycie Popup. Zobacz przykład kodu.

<!--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> 
Powiązane problemy