Почему события мыши рекламируются помимо событий Touch? - PullRequest
2 голосов
/ 13 марта 2012

Я хотел бы знать, пожалуйста, как предотвратить WPF, продвигающий события мыши, когда источником события является прикосновение?

Я читал статью JoshB здесь но мышьсобытия продолжают вызываться, хотя я сделал e.Handled = true;

Вот что говорит ДжошБ:

Поток событий касания без манипуляций.События касания не обрабатываются, поэтому WPF продвигает это событие на эквивалент мыши

Итак, я попытался в своем коде пометить событие как обработанное, но WPF по-прежнему поддерживает события мыши, как только я коснусь _touchSurface который InkSurface

Вот мой код: (я не использую 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;
}

Ответы [ 2 ]

1 голос
/ 02 сентября 2015

Если вы не хотите, чтобы события мыши развивались, то вам не нужно обрабатывать TouchDown и устанавливать e.Handled = true.Тогда вмешается код манипуляции, и вы не получите события мыши.

0 голосов
/ 01 октября 2012

Самир: У меня тоже была такая же проблема. Вы пытались извлечь класс из этого компонента на основе UIElement и переопределить события Mouse и Touch (вместо установки обработчиков событий)?

https://github.com/100kph/TouchMousePromotion имеет пример заглушки

...