如何在WPF鼠标左键单击时调用自定义工具提示?

时间:2011-05-02 12:48:29

标签: wpf listview wpf-controls

我有一个列表视图,其中一列只显示图像。当用户明确鼠标左键单击图像时,我想在图像上显示工具提示。当用户鼠标悬停在任何图像上时,我不想显示工具提示。

1 个答案:

答案 0 :(得分:0)

您可以使用Popup代替工具提示,点击后将Popup.IsOpen设置为true。可能需要调整展示位置设置,Popup.StaysOpen也可能设置为false

编辑:如重复问题所示,Tooltip几乎具有相同的功能。只需要明确处理它。

<DataTemplate>
    <Image Name="image" MaxHeight="48" Source="{Binding ImgUri}" ToolTipService.IsEnabled="False">
        <Image.Triggers>
            <EventTrigger RoutedEvent="Image.MouseLeftButtonUp">
                <BeginStoryboard>
                    <Storyboard>
                        <BooleanAnimationUsingKeyFrames Storyboard.Target="{x:Reference image}"
                                                        Storyboard.TargetProperty="ToolTip.IsOpen">
                            <DiscreteBooleanKeyFrame KeyTime="0:0:0" Value="False"/>
                            <DiscreteBooleanKeyFrame KeyTime="0:0:0.0001" Value="True"/>
                        </BooleanAnimationUsingKeyFrames>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Image.Triggers>
        <Image.Resources>
            <ToolTip x:Key="tip" StaysOpen="False">
                <Image Source="{Binding Source={x:Reference image}, Path=Source}"/>
            </ToolTip>
        </Image.Resources>
        <Image.ToolTip>
            <StaticResource ResourceKey="tip"/>
        </Image.ToolTip>
    </Image>
</DataTemplate>

请注意,已通过ToolTipService.IsEnabled="False"

禁用了工具包自动打开功能

以上示例显示了弹出窗口中没有大小限制的图像