Windows 7和Windows 8桌面WPF触摸和鼠标左键向下事件处理差异

Windows 7和Windows 8桌面WPF触摸和鼠标左键向下事件处理差异,wpf,windows-7,event-handling,windows-8,touch,Wpf,Windows 7,Event Handling,Windows 8,Touch,我在WPF用户控件上创建了一个边框,并注册了触碰和鼠标左键按下事件 <Border TouchDown="Border_TouchDown_1" MouseLeftButtonDown="Border_MouseLeftButtonDown_1"> <Label FontSize="28">Label</Label> </Border> 在windows 8中的

我在WPF用户控件上创建了一个边框,并注册了触碰和鼠标左键按下事件

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

        <Label FontSize="28">Label</Label>
    </Border>
在windows 8中的触摸手势上,我看到两个事件处理程序都被触发,即使事件是在Border\u TouchDown\u 1方法中处理的。 在Windows7中,我只看到调用Border_touchtown_1方法,该方法似乎是正确的,因为事件已被处理

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


有人有内幕吗?

你知道什么会让你大吃一惊吗?如果未设置
e.Handled=true
,则不会获得鼠标事件(至少对于PreviewTouchDown/PreviewMouseDown)。这几乎就像有人为windows 8输入了一个打字错误,它正在向后运行。

这有没有解决过?我现在也在努力解决这个问题。不,我们编写了自己的低级触摸处理程序。
    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();
    }