StylusDown事件发生在TouchDown之后



我正在为Windows 8平板电脑开发一个应用程序。我订阅了TouchDown和StylusDown事件。问题是,当我用手指触摸时,两个事件都会发生。TouchDown首先出现,然后是StylusDown。当我用触控笔触摸时,只有StylusDown发生。

这是所有平板电脑的正常行为吗?还是只针对某些型号?

我找不到任何关于这个的文件

这是WPF中所有触摸事件的标准流程。如果TouchDown事件没有被标记为已处理,它将作为StylusDown触发,然后作为MouseDown触发。您可以通过处理事件来停止此操作,例如如下所示:

protected override void OnTouchDown( TouchEventArgs e )
{
    // your code here
    e.Handled = true;
}

设计WPF时,没有太多触控或触控笔设备。为了保持旧的应用程序响应新的输入设备,如触摸屏或触控笔,他们的事件被转换如下(如果它没有被标记为已处理):

  • 触摸设备:手写笔>联系在鼠标
  • 触控笔设备:Stylus>鼠标

问题开始时,你想处理每个输入设备事件只有当它来自其相应的真实设备,例如处理触控笔事件只有当它来自一个真正的触控笔设备,而不是从触摸设备,等。

对于Touch事件,没有什么特别需要的,因为它只由真正的触摸设备触发。

在鼠标事件的情况下,StylusDevice属性可以使用:

        protected override void OnMouseDown(MouseButtonEventArgs e)
        {
            if (e.StylusDevice != null) return;
            // This is a real mouse event
            base.OnMouseDown(e);
        }

在Stylus事件的情况下,StylusDevice.TabletDevice.Type属性可以使用:

        protected override void OnStylusButtonDown(StylusButtonEventArgs e)
        {
            if (e.StylusDevice.TabletDevice.Type != TabletDeviceType.Stylus) return;
            // This is a real stylus event
            base.OnStylusButtonDown(e);
        }

相关内容

  • 没有找到相关文章

最新更新