我正在使用ManipulationDelta
事件拖动Canvas
,如下所示:
private Point lastMovePosition;
private void MoveCanvas(ManipulationDeltaEventArgs e)
{
var position = e.ManipulationOrigin;
if (CanvasShareSwarm.Scale > 1) //Force zoom out limit to view all
{
CanvasShareSwarm.Offset -= position - lastMovePosition;
lastMovePosition = position;
}
}
这有效,但是当拖动开始时,Canvas
总会在移动之前跳回到前一个位置。我怀疑它与我的lastMovePosition
点有关。
是什么导致这种情况?
答案 0 :(得分:2)
我想你必须在ManipulationStarted事件处理程序中初始化lastMovePosition
字段:
private void OnManipulationStarted(object sender, ManipulationStartedEventArgs e)
{
lastMovePosition = e.ManipulationOrigin;
}