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

11

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

是否有任何方法可以实现这一点?

2个回答

9

有一个StaysOpen工具提示属性,但根据这本书的说法,最好使用Popup控件(只需让它看起来像工具提示)。

以下是该书中的一句话:

在实践中没有效果。该属性的预期目的是允许您创建一个工具提示,直到用户单击其他位置才关闭。然而,ToolTipService.ShowDuration属性覆盖了StaysOpen属性。结果,工具提示总是在可配置的时间(通常约为5秒)后消失,或者当用户将鼠标移开时。如果您想创建一个类似工具提示的窗口,使其无限期地保持打开状态,最简单的方法是使用Popup控件。


我曾经担心我不得不去处理弹出控件。感谢您的回答。 - viggity
答案是肯定还是否定?这是工具提示的一个非常恼人的行为。 - xr280xr

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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接