鼠标按下时WPF工具提示消失

时间:2010-03-11 15:44:22

标签: wpf mouse tooltip

我在一个元素上有工具提示,即使用户在我的元素上单击或按住鼠标按钮时我仍然保持打开状态。

有没有这样做?

2 个答案:

答案 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>