多事件绑定同一处理程序时,如何判断触发的具体事件?
如何在共享事件处理程序中区分PointerPressed和PointerMoved事件?
你的代码示例
XAML部分:
<Canvas PointerPressed="Handler" PointerMoved="Handler"/>
C#处理程序:
void Handler(object sender, PointerRoutedEventArgs e) { /* */ }
解决方案
直接通过PointerRoutedEventArgs的PointerUpdateKind属性就能区分触发事件的类型,这个属性属于PointerUpdateKind枚举,包含了所有指针事件的类型标识。
修改后的处理程序代码如下:
void Handler(object sender, PointerRoutedEventArgs e) { if (e.PointerUpdateKind == PointerUpdateKind.PointerPressed) { // 这里写PointerPressed事件的处理逻辑 } else if (e.PointerUpdateKind == PointerUpdateKind.PointerMoved) { // 这里写PointerMoved事件的处理逻辑 } }
除了这两种类型,PointerUpdateKind枚举还涵盖了PointerReleased、PointerWheelChanged等其他指针事件类型,后续如果需要把更多指针事件绑定到同一个处理程序,也可以用同样的方式判断。
内容的提问来源于stack exchange,提问作者Ajaykrishnan R
相关产品推荐
相关产品推荐

