我在一个元素上有工具提示,即使用户在我的元素上单击或按住鼠标按钮时我仍然保持打开状态。
有没有这样做?
答案 0 :(得分:8)
有一个StaysOpen工具提示属性,但是根据this book你最好使用弹出控件(只是让它看起来像工具提示)。
以下是本书的引用:
在实践中没有效果。该 这个属性的预期目的是 允许您创建一个工具提示 在用户点击之前保持打开状态 别的地方。然而 ToolTipService.ShowDuration属性 覆盖StaysOpen属性。作为一个 结果,工具提示总是消失 经过一段可配置的时间 (通常约5秒钟)或当 用户将鼠标移开。如果你想 创建一个类似工具提示的窗口 无限期地保持开放,最简单 方法是使用Popup控件。
答案 1 :(得分:2)
最简单的方法是使用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>