Mam etykietkę narzędzia na elemencie, który chcę pozostać otwarty, nawet gdy użytkownik kliknie lub przytrzyma przycisk myszy w dół nad moim elementem.ToolTip WPF znika po przyciśnięciu myszką
Czy jest to w ogóle możliwe?
Mam etykietkę narzędzia na elemencie, który chcę pozostać otwarty, nawet gdy użytkownik kliknie lub przytrzyma przycisk myszy w dół nad moim elementem.ToolTip WPF znika po przyciśnięciu myszką
Czy jest to w ogóle możliwe?
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.
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>
Obawiałem się, że będę musiał zadzierać z kontrolką wyskakującą. Dzięki za odpowiedź – viggity
Tak więc odpowiedź brzmi "tak" lub "nie"? Jest to bardzo irytujące zachowanie etykiety narzędzi. – xr280xr