Мы используем события Controls.PreviewContactDown, PreviewContactUp и PreviewContactChanged для захвата отмеченных элементов, помещаемых, удаляемых и перемещаемых на поверхность, что прекрасно работает в приложении Simulator, которое поставляется вместе с поверхностью.
На реальной поверхности, если вы слишком быстро переместили помеченный элемент, камеры фактически потеряли фокус метки, предположите, что он был удален, а затем повторно захватите его, когда он перестанет двигаться. Это обеспечивает довольно плохой опыт для наших клиентов.
То, что я предлагаю, - это способ переопределить или создать новое событие, которое будет реагировать на помеченные события элемента, но не запускать обработчик событий до истечения некоторой задержки ... т.е., если "ContactUp" срабатывает, подождите 100 мс Затем выполните обработчик события. В идеале мы бы просто могли использовать альтернативное присоединенное свойство для определения этих обработчиков событий, т.е.
<Panel local:TagDown="TagDownEventHandler" />
И если бы мы могли заставить его использовать объекты ICommand вместо обработчиков событий, это было бы еще лучше.