20

我在 XAML 中有一个 ListView 控件。这些项目由一个模板控件定义,该控件在网格内具有一个 TextBlock。现在我想在双击 TextBlock 时触发一个动作。令我惊讶的是,我发现没有可以连接的 DoubleClick 事件......!我以为只是 TextBlock 没有它,但实际上没有控件有它。我寻找 DoubleClick 和 MouseDoubleClick 但它们肯定不存在。

我已经阅读了使用 Gesture="MouseDoubleClick" 将 EventTrigger 添加到控件的建议。它看起来很有希望,但在我的情况下,编译器会抱怨并告诉我没有像 MouseDoubleClick 这样的手势。与 DoubleClick 相同。

DoubleClick 在某些版本的 .Net 中消失了吗?我有 .Net Framework 4.5,项目是 WPF 应用程序。

我是否必须通过检测 MouseDown 并检查自上次 MouseDown 以来经过的时间来做愚蠢的解决方法?听起来像石器时代...

4

3 回答 3

28

制定您的问题总是令人耳目一新!想了一会儿,我想也许他们在鼠标事件中添加了一个计数器,而不是单独的事件。好像是这样啊!!!MouseButtonEventArgs 有一个 ClickCount 属性。检查值 2 时,我检测到我的 DoubleClick!

只是踢出 DoubleClick 还是有点奇怪。即使在搜索之后,我也找不到关于它何时以及为什么消失的参考。

于 2012-11-01T07:48:57.317 回答
23

只是为了展示解决方案 Jakob 的意思是:

private void img_MouseDown(object sender, MouseButtonEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed && e.ClickCount == 2)
            {
                //DO SOMETHING
            }
        }
于 2012-11-01T10:13:00.363 回答
9

使用内容 ContentControl,卢克!

<ContentControl MouseDoubleClick="OnDoubleClick"> 
    <TextBlock Text="Hello" FontSize="15" /> 
</ContentControl>
于 2019-04-11T08:54:41.620 回答