【问题标题】:Windows 7 and Windows 8 Desktop WPF Touch and Mouse LeftButtonDown Event handling differencesWindows 7 和 Windows 8 桌面 WPF 触摸和鼠标 LeftButtonDown 事件处理差异
【发布时间】:2012-10-06 21:15:27
【问题描述】:

我在 WPF 用户控件上创建了一个边框,并注册了 Touch Down 和 Mouse Left Button Down 事件。

    <Border 
            TouchDown="Border_TouchDown_1" 
            MouseLeftButtonDown="Border_MouseLeftButtonDown_1">

        <Label FontSize="28">Label</Label>
    </Border>

在文件后面的代码中,我有以下事件处理程序:

    private void Border_TouchDown_1(object sender, TouchEventArgs e)
    {
        e.Handled = true;
        Result.Append("Border_TouchDown_1" + "\n");
        LogText = Result.ToString();
        RaisePropertyChange();
    }
    private void Border_MouseLeftButtonDown_1(object sender, MouseButtonEventArgs e)
    {
        Result.Append("Border_MouseLeftButtonDown_1" + "\n");
        LogText = Result.ToString();
        RaisePropertyChange();
    }

在 Windows 8 中的触摸手势上,我看到两个事件处理程序都被触发,即使事件是在 Border_TouchDown_1 方法中处理的。 在 Windows 7 中,我只看到调用了 Border_TouchDown_1 方法,这似乎是正确的,因为事件已被处理。

我猜微软简洁地决定触发这两个事件以使所有应用程序触摸感知这对于仅鼠标应用程序是可以的,但我的应用程序是触摸感知的,我想关闭此行为。

任何有内情的人都在那里???

【问题讨论】:

  • 这个问题解决了吗?我现在也在努力解决这个问题。
  • 不 - 我们编写了自己的低级触摸处理程序。

标签: wpf windows-7 event-handling windows-8 touch


【解决方案1】:

你知道什么会让你大吃一惊吗?如果您不设置e.Handled = true,您将不会获得鼠标事件(至少对于 PreviewTouchDown / PreviewMouseDown)。这几乎就像有人在 Windows 8 上打错了字,而且它正在倒退。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    相关资源
    最近更新 更多