我想知道,当事件的来源是触摸时,如何阻止WPF推广鼠标事件?
我阅读了JoshB here的文章但是,鼠标事件一直被触发,尽管我做了e.Handled = true;
这是JoshB所说的:
没有操作的触摸事件流程。触摸事件未处理,因此WPF将事件提升为鼠标等效
所以,我尝试在我的代码中将事件标记为已处理,但是当我触摸_touchSurface
InkSurface
时,WPF仍会提升鼠标事件
这是我的代码:(我没有使用Microsoft Surface SDK)
_touchSurface.IsManipulationEnabled = true;
_touchSurface.TouchDown += new EventHandler<TouchEventArgs>(touchDown);
_touchSurface.TouchMove += new EventHandler<TouchEventArgs>(touchMove);
_touchSurface.TouchEnter += new EventHandler<TouchEventArgs>(touchEnter);
_touchSurface.TouchLeave += new EventHandler<TouchEventArgs>(touchLeave);
_touchSurface.ManipulationDelta += new EventHandler<ManipulationDeltaEventArgs>(ManipulationDelta);
_touchSurface.ManipulationStarting += new EventHandler<ManipulationStartingEventArgs>(ManipulationStarting);
_touchSurface.ManipulationCompleted += new EventHandler<ManipulationCompletedEventArgs>(ManipulationCompleted);
void touchDown(object sender, TouchEventArgs e)
{
e.Handled = true;
}
void touchMove(object sender, TouchEventArgs e)
{
e.Handled = true;
}
void touchLeave(object sender, TouchEventArgs e)
{
e.Handled = true;
}
void ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
e.Handled = true;
}
void ManipulationStarting(object sender, ManipulationStartingEventArgs e)
{
e.Handled = true;
}
void ManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
{
e.Handled = true;
}
答案 0 :(得分:1)
如果您不希望鼠标事件得到提升,那么不需要处理TouchDown
并设置{{ 1}}。然后操作代码将介入,您将无法获得鼠标事件。
答案 1 :(得分:0)
萨米尔:我也有同样的问题。您是否尝试从基于UIElement的组件派生类并覆盖Mouse和Touch事件(而不是设置事件处理程序)?