【问题标题】:Can not find DoubleClick in XAML在 XAML 中找不到 DoubleClick
【发布时间】:2012-11-01 07:48:57
【问题描述】:

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

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

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

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

【问题讨论】:

  • Silverlight 5 仅支持双击事件。

标签: xaml double-click


【解决方案1】:

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

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

【讨论】:

  • 非常棒的答案感谢您的时间和努力
【解决方案2】:

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

private void img_MouseDown(object sender, MouseButtonEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed && e.ClickCount == 2)
            {
                //DO SOMETHING
            }
        }

【讨论】:

  • 有趣的是,这只适用于 MouseDown 事件。在 MouseUp 事件中,即使双击后 e.ClickCount 也是 1。
【解决方案3】:

使用内容 ContentControl,卢克!

<ContentControl MouseDoubleClick="OnDoubleClick"> 
    <TextBlock Text="Hello" FontSize="15" /> 
</ContentControl>

【讨论】:

  • 我发现这个解决方案的工作更加一致。最初我进行了点击计数监控,因为大多数人似乎都同意该解决方案并且它确实有效。我已经对控件进行了更新,但是有些东西破坏了它。似乎我只是收到“单击”的多次单击事件,这不允许我区分单击和双击(除非我放入计时器)。将文本块包装在内容控件中会暴露对该内容控件的双击,并且该事件似乎按预期触发。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多