今天先说说:SuspendMousePromotionUntilTouchUp
SuspendMousePromotionUntilTouchUp(),禁止该时间被提升为鼠标事件,得解释一下,这个方法来自桌面的Silverlight,很多桌面程序只有鼠标按键,现在有触摸屏了,点一下触摸屏,一小下,就不好区分,这个事件是鼠标点的还是触控事件呢?这个函数就是在处理触控的时候防止同时触发鼠标的点击事件。因此,这个函数只能在,只有在处理第一个触摸事件,并且是在处理按下事件的时候才能调用。否则~~哼哼,会抛出异常。下面是个调用的例子。
Touch.FrameReported += OnTouchFrameReported;
在到xaml中添加一个控件,添加下面属性。
MouseEnter="onMouseEnter"
MouseLeftButtonDown="onDown"
MouseLeftButtonUp="onUp"
ManipulationStarted="onStart"
ManipulationCompleted="onCompleted"
1. 设置SuspendMousePromotionUntilTouchUp,点击事件调用顺序:
onMouseEnter
ManipulationStarted
MouseLeftButtonDown
OnTouchFrameReported
ManipulationCompleted
OnTouchFrameReported
第二次点击:
ManipulationStarted
OnTouchFrameReported
ManipulationCompleted
OnTouchFrameReported
再次点击,循环处理。
2. 不设置,点击事件:
onMouseEnter
ManipulationStarted
MouseLeftButtonDown
OnTouchFrameReported
ManipulationCompleted
MouseLeftButtonUp
OnTouchFrameReported
再次点击,循环处理。
可见:及时设置SuspendMousePromotionUntilTouchUp,由于touch-event是在mouse-event之后处理,故,会有某些mouse-event。但之后就没有了mouse-event。