2

我在 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 方法,这似乎是正确的,因为事件已被处理。

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

有没有内线的人???

4

1 回答 1

2

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

于 2013-02-22T21:26:13.453 回答