Вместо этого я бы попробовал использовать CumulativeManipulation.
Всякий раз, когда мне нужно сделать перемещение элемента пользовательского интерфейса с помощью перетаскивания, я не пытаюсь повторно использовать одну и ту же переменную и изменять ее дельтой, а затем повторно использовать эту же переменную для установки положения. Это почти всегда дает мне проблемы со стабильностью независимо от платформы. Вместо этого попробуйте сохранить переменную при начале перетаскивания и добавить дельту к этой переменной только тогда, когда вам нужно обновить позицию. Так что-то вроде этого:
Точка происхождения;
void MouseDown (расположение точки)
{
происхождение = местоположение;
}
void MouseDrag (Vector cumulativeOffset)
{
SetControlLocation (происхождение + cumulativeOffset);
}
Кроме того, каков источник ManipulationEvent? Вы определенно захотите убедиться, что это не текущий прямоугольник, или это определенно вызовет проблемы, которые вы видите.