WPhone7 随笔 (一)

今天先说说:SuspendMousePromotionUntilTouchUp

 

 

 SuspendMousePromotionUntilTouchUp(),禁止该时间被提升为鼠标事件,得解释一下,这个方法来自桌面的Silverlight,很多桌面程序只有鼠标按键,现在有触摸屏了,点一下触摸屏,一小下,就不好区分,这个事件是鼠标点的还是触控事件呢?这个函数就是在处理触控的时候防止同时触发鼠标的点击事件。因此,这个函数只能在,只有在处理第一个触摸事件,并且是在处理按下事件的时候才能调用。否则~~哼哼,会抛出异常。下面是个调用的例子。

 

Touch.FrameReported += OnTouchFrameReported;

void OnTouchFrameReported(object sender, TouchFrameEventArgs args) { TouchPoint primaryTouchPoint = args.GetPrimaryTouchPoint(null); //第一个触点,并且是按下事件 if (primaryTouchPoint != null && primaryTouchPoint.Action == TouchAction.Down) { args.SuspendMousePromotionUntilTouchUp(); } … }

 

 在到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。

 

你可能感兴趣的:(WPhone7 随笔 (一))