Windows 7和Windows 8桌面WPF触摸和鼠标左键向下事件处理差异
我在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中的
<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();
}