我在一个元素上有一个工具提示,希望即使用户在我的元素上单击或按住鼠标按钮,工具提示也能保持打开状态。
是否有任何方法可以实现这一点?
有一个StaysOpen工具提示属性,但根据这本书的说法,最好使用Popup控件(只需让它看起来像工具提示)。
以下是该书中的一句话:
在实践中没有效果。该属性的预期目的是允许您创建一个工具提示,直到用户单击其他位置才关闭。然而,ToolTipService.ShowDuration属性覆盖了StaysOpen属性。结果,工具提示总是在可配置的时间(通常约为5秒)后消失,或者当用户将鼠标移开时。如果您想创建一个类似工具提示的窗口,使其无限期地保持打开状态,最简单的方法是使用Popup控件。
<!--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>